Saturn Instruction Set Derek S. Nickel ================================================================ 0... * misc operations (RTNs, modes, stack, status, P, logic) 1... * data movement/loading (D0,D1,R0-R4) 2n P= n 3xn..n LC(m) n..n (x = m - 1) 3mc..c LCASC \A..A\ (m = 2*characters - 1) 3nh..h LCHEX h..h (n = digits - 1) 400 RTNC 4aa GOC label 420 NOP3 500 RTNNC 5aa GONC label 6aaa GOTO label 6300 NOP4 64000 NOP5 7aaa GOSUB label 8... * misc, tests and branching 9... * tests w/fs Aax * math and assignment w/fs Abx * math and assignment w/fs Bax * math and assignment w/fs Bbx * math and assignment w/fs Cx * math and assignment w/A Dx * math and assignment w/A Ex * math and assignment w/A Fx * math and assignment w/A 0 ================================================================ 00 RTNSXM 01 RTN 02 RTNSC 03 RTNCC 04 SETHEX 05 SETDEC 06 RSTK=C 07 C=RSTK 08 CLRST 09 C=ST 0A ST=C 0B CSTEX 0C P=P+1 0D P=P-1 0Exx * logic operations 0F RTI -- field --- fs A ------------ 0Ea0 0EF0 A=A&B field 0Ea1 0EF1 B=B&C field 0Ea2 0EF2 C=C&A field 0Ea3 0EF3 D=D&C field 0Ea4 0EF4 B=B&A field 0Ea5 0EF5 C=C&B field 0Ea6 0EF6 A=A&C field 0Ea7 0EF7 C=C&D field 0Ea8 0EF8 A=A!B field 0Ea9 0EF9 B=B!C field 0EaA 0EFA C=C!A field 0EaB 0EFB D=D!C field 0EaC 0EFC B=B!A field 0EaD 0EFD C=C!B field 0EaE 0EFE A=A!C field 0EaF 0EFF C=C!D field fs: P WP XS X S M B W a: 0 1 2 3 4 5 6 7 10, 11, 12 ================================================================ 100 R0=A 101 R1=A 102 R2=A 103 R3=A 104 R4=A 105 106 107 108 R0=C 109 R1=C 10A R2=C 10B R3=C 10C R4=C 10D 10E 10F 110 A=R0 111 A=R1 112 A=R2 113 A=R3 114 A=R4 115 116 117 118 C=R0 119 C=R1 11A C=R2 11B C=R3 11C C=R4 11D 11E 11F 120 AR0EX 121 AR1EX 122 AR2EX 123 AR3EX 124 AR4EX 125 126 127 128 CR0EX 129 CR1EX 12A CR2EX 12B CR3EX 12C CR4EX 12D 12E 12F 13 through 1F ================================================================ 130 D0=A 131 D1=A 132 AD0EX 133 AD1EX 134 D0=C 135 D1=C 136 CD0EX 137 CD1EX 138 D0=AS 139 D1=AS 13A AD0XS 13B AD1XS 13C D0=CS 13D D1=CS 13E CD0XS 13F CD1XS ---------- field ----------- A B fs d ---------------------------- 140 148 150a 158x DAT0=A field 141 149 151a 159x DAT1=A field 142 14A 152a 15Ax A=DAT0 field 143 14B 153a 15Bx A=DAT1 field 144 14C 154a 15Cx DAT0=C field 145 14D 155a 15Dx DAT1=C field 146 14E 156a 15Ex C=DAT0 field 147 14F 157a 15Fx C=DAT1 field 16x D0=D0+ n 17x D1=D1+ n 18x D0=D0- n 19nn D0=(2) nn 19hh D0=HEX hh 1Annnn D0=(4) nnnn 1Ahhhh D0=HEX hhhh 1Bnnnnn D0=(5) nnnnn 1Bhhhhh D0=HEX hhhhh 1Cx D1=D1- n 1Dnn D1=(2) nn 1Dhh D1=HEX hh 1Ennnn D1=(4) nnnn 1Ehhhh D1=HEX hhhh 1Fnnnnn D1=(5) nnnnn 1Fhhhhh D1=HEX hhhhh 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, 81 ================================================================ 800 OUT=CS 801 OUT=C 802 A=IN 803 C=IN 804 UNCNFG 805 CONFIG 806 C=ID 807 SHUTDN 8080 INTON 808C PC=(A) 808F INTOFF 809 C+P+1 80A RESET 80B BUSCC 80Cn C=P n 80Dn P=C n 80E SREQ? 80Fn CPEX n 810 ASLC 811 BSLC 812 CSLC 813 DSLC 814 ASRC 815 BSRC 816 CSRC 817 DSRC 818 819 81A 81B 81C ASRB 81D BSRB 81E CSRB 81F DSRB 82 through 8F, 9 ================================================================ 82n no opcode, clear hardware status w/n as bit mask 821 XM=0 822 SB=0 824 SR=0 828 MP=0 82F CLRHST 831yy ?XM=0 832yy ?SB=0 834yy ?SR=0 838yy ?MP=0 84n ST=0 n 85n ST=1 n 86nyy ?ST=0 n ?ST#1 n 87nyy ?ST=1 n ?ST#0 n 88nyy ?P# n 89nyy ?P= n 8Axyy * tests w/A (equal and not equal) 8Bxyy * tests w/A (inequality) 8Caaaa GOLONG label 8Daaaaa GOVLNG label 8Eaaaa GOSUBL label 8Faaaaa GOSBVL label 9zxyy * tests w/fs TEST00 RTNYES TESTyy GOYES label 8A, 8B, 9 ================================================================ --- field ---- A fs -------------- 8A0yy 9a0yy ?A=B field ?B=A field 8A1yy 9a1yy ?B=C field ?C=B field 8A2yy 9a2yy ?A=C field ?C=A field 8A3yy 9a3yy ?C=D field ?D=C field 8A4yy 9a4yy ?A#B field ?B#A field 8A5yy 9a5yy ?B#C field ?C#B field 8A6yy 9a6yy ?A#C field ?C#A field 8A7yy 9a7yy ?C#D field ?D#C field 8A8yy 9a8yy ?A=0 field 8A9yy 9a9yy ?B=0 field 8AAyy 9aAyy ?C=0 field 8AByy 9aByy ?D=0 field 8ACyy 9aCyy ?A#0 field 8ADyy 9aDyy ?B#0 field 8AEyy 9aEyy ?C#0 field 8AFyy 9aFyy ?D#0 field 8B0yy 9b0yy ?A>B field 8B1yy 9b1yy ?B>C field 8B2yy 9b2yy ?C>A field 8B3yy 9b3yy ?D>C field 8B4yy 9b4yy ?A=B field 8B9yy 9b9yy ?B>=C field 8BAyy 9bAyy ?C>=A field 8BByy 9bByy ?D>=C field 8BCyy 9bCyy ?A<=B field 8BDyy 9bDyy ?B<=C field 8BEyy 9bEyy ?C<=A field 8BFyy 9bFyy ?D<=C field 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 C1 Aa1 B=B+C field C2 Aa2 C=C+A field C3 Aa3 D=D+C field C4 Aa4 A=A+A field C5 Aa5 B=B+B field C6 Aa6 C=C+C field C7 Aa7 D=D+D field C8 Aa8 B=B+A field C9 Aa9 C=C+B field CA AaA A=A+C field CB AaB C=C+D field CC AaC A=A-1 field CD AaD B=B-1 field CE AaE C=C-1 field CF AaF D=D-1 field D0 Ab0 A=0 field D1 Ab1 B=0 field D2 Ab2 C=0 field D3 Ab3 D=0 field D4 Ab4 A=B field D5 Ab5 B=C field D6 Ab6 C=A field D7 Ab7 D=C field D8 Ab8 B=A field D9 Ab9 C=B field DA AbA A=C field DB AbB C=D field DC AbC ABEX field DD AbD BCEX field DE AbE ACEX field DF AbF CDEX field 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 E1 Ba1 B=B+C field E2 Ba2 C=C+A field E3 Ba3 D=D+C field E4 Ba4 A=A+1 field E5 Ba5 B=B+1 field E6 Ba6 C=C+1 field E7 Ba7 D=D+1 field E8 Ba8 B=B-A field E9 Ba9 C=C-B field EA BaA A=A-C field EB BaB C=C-D field EC BaC A=B-A field ED BaD B=C-B field EE BaE C=A-C field EF BaF D=C-D field F0 Bb0 ASL field F1 Bb1 BSL field F2 Bb2 CSL field F3 Bb3 DSL field F4 Bb4 ASR field F5 Bb5 BSR field F6 Bb6 CSR field F7 Bb7 DSR field F8 Bb8 A=-A field F9 Bb9 B=-B field FA BbA C=-C field FB BbB D=-D field FC BbC A=-A-1 field FD BbD B=-B-1 field FE BbE C=-C-1 field FF BbF D=-D-1 field 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 Saturn Registers ================================================================ +--------------------------------+ | | A +--------------------------------+ | | B +--------------------------------+ | | C +--------------------------------+ | | D +--------------------------------+ +----------+ | | D0 +----------+ | | D1 +----------+ +--+ | | P +--+ +----------+ | | PC +----------+ +--------------------------------+ | | R0 +--------------------------------+ | | R1 +--------------------------------+ | | R2 +--------------------------------+ | | R3 +--------------------------------+ | | R4 +--------------------------------+ +--------+ | | IN (16 bits) +--------+ | | OUT (12 bits) +------+ +-+ | | Carry (1 bit) +-+ +--------+ | F .. 0 | ST (16 bits) +--------+ +-------------+ | MP SB SR XM | HST (4 bits) +-------------+