S1C88 InstructionSet

From SublabWiki
Revision as of 01:14, 11 July 2015 by Asterick (talk | contribs) (2nd operation code (1st operation code = CE))
Jump to: navigation, search

THIS PAGE IS IN PROCESS

Contents

8-bit arithmetic and logic operation

ADD: Addition

ADC: Addition with carry

SUB: Subtraction

SBC: Subtraction with carry

AND: Logical product

OR: Logical sum

XOR: Exclusive OR

CP: Comparison

BIT: Bit test

INC: 1 increment

DEC: 1 decrement

MLT: Multiplication

DIV: Division

CPL: Complement of 1

NEG: Complement of 2

8-bit transfer

LD: Load

EX: Byte exchange

SWAP: Nibble exchange

Rotate/shift

RL: Rotate to left

RLC: Rotate to left with carry

RR: Rotate to right

RRC: Rotate to right with carry

SLA: Arithmetic shift to left

SLL: Logical shift to left

SRA: Arithmetic shift to right

SRL: Logical shift to right

Auxiliary operation

PACK: Pack

UPCK: Unpack

SEP: Code extension

16-bit arithmetic operation

ADD: Addition

ADC: Addition with carry

SUB: Subtraction

SBC: Subtraction with carry

CP: Comparison

INC: 1 increment

DEC: 1 decrement

16-bit transfer

LD: Load

EX: Word exchange

Stack Control

PUSH: Push

POP: Pop

Branch

JRS: Relative short jump

JRL: Relative long jump

JP: Indirect jump

DJR: Loop

CARS: Relative short call

CARL: Relative long call

CALL: Indirect call

RET: Return

RETE: Exception processing return

RETS: Return and skip

INT: Software interrupt

System Control

NOP: No operation

HALT: Shifts to HALT status

SLP: Shifts to SLEEP status

Operation Code Map

1st operation code

L\H 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 ADD A,A ADD A,B ADD A,#nn ADD A,[HL] ADD A,[BR:ll] ADD A,[hhll] ADD A,[IX] ADD A,[IY] ADC A,A ADC A,B ADC A,#nn ADC A,[HL] ADC A,[BR:ll] ADC A,[hhll] ADC A,[IX] ADC A,[IY]
1 SUB A,A SUB A,B SUB A,#nn SUB A,[HL] SUB A,[BR:ll] SUB A,[hhll] SUB A,[IX] SUB A,[IY] SBC A,A SBC A,B SBC A,#nn SBC A,[HL] SBC A,[BR:ll] SBC A,[hhll] SBC A,[IX] SBC A,[IY]
2 AND A,A AND A,B AND A,#nn AND A,[HL] AND A,[BR:ll] AND A,[hhll] AND A,[IX] AND A,[IY] OR A,A OR A,B OR A,#nn OR A,[HL] OR A,[BR:ll] OR A,[hhll] OR A,[IX] OR A,[IY]
3 CP A,A CP A,B CP A,#nn CP A,[HL] CP A,[BR:ll] CP A,[hhll] CP A,[IX] CP A,[IY] XOR A,A XOR A,B XOR A,#nn XOR A,[HL] XOR A,[BR:ll] XOR A,[hhll] XOR A,[IX] XOR A,[IY]
4 LD A,A LD A,B LD A,L LD A,H LD A,[BR:ll] LD A,[HL] LD A,[IX] LD A,[IY] LD B,A LD B,B LD B,L LD B,H LD B,[BR:ll] LD B,[HL] LD B,[IX] LD B,[IY]
5 LD L,A LD L,B LD L,L LD L,H LD L,[BR:ll] LD L,[HL] LD L,[IX] LD L,[IY] LD H,A LD H,B LD H,L LD H,H LD H,[BR:ll] LD H,[HL] LD H,[IX] LD H,[IY]
6 LD [IX],A LD [IX],B LD [IX],L LD [IX],H LD [IX],[BR:ll] LD [IX],[HL] LD [IX],[IX] LD [IX],[IY] LD [HL],A LD [HL],B LD [HL],L LD [HL],H LD [HL],[BR:ll] LD [HL],[HL] LD [HL],[IX] LD [HL],[IY]
7 LD [IY],A LD [IY],B LD [IY],L LD [IY],H LD [IY],[BR:ll] LD [IY],[HL] LD [IY],[IX] LD [IY],[IY] LD [BR:ll],A LD [BR:ll],B LD [BR:ll],L LD [BR:ll],H Undefined Code LD [BR:ll],[HL] LD [BR:ll],[IX] LD [BR:ll],[IY]
8 INC A INC B INC L INC H INC BR INC [BR:ll] INC [HL] INC SP DEC A DEC B DEC L DEC H DEC BR DEC [ll] DEC [HL] DEC SP
9 INC BA INC HL INC IX INC IY BIT A,B BIT [HL],#nn BIT A,#nn BIT B,#nn DEC BA DEC HL DEC IX DEC IY AND SC,#nn OR SC,#nn XOR SC,#nn LD SC,#nn
A PUSH BA PUSH HL PUSH IX PUSH IY PUSH BR PUSH EP PUSH IP PUSH SC POP BA POP HL POP IX POP IY POP BR POP EP POP IP POP SC
B LD A,#nn LD B,#nn LD L,#nn LD H,#nn LD BR,#hh LD [HL],#nn LD [IX],#nn LD [IY],#nn LD BA,[hhll] LD HL,[hhll] LD IX,[hhll] LD IY,[hhll] LD [hhll],BA LD [hhll],HL LD [hhll],IX LD [hhll],IY
C ADD BA,#mmnn ADD HL,#mmnn ADD IX,#mmnn ADD IY,#mmnn LD BA,#mmnn LD HL,#mmnn LD IX,#mmnn LD IY,#mmnn EX BA,HL EX BA,IX EX BA,IY EX BA,SP EX A,B EX A,[HL] Expansion Code Expansion Code
D SUB BA,#mmnn SUB HL,#mmnn SUB IX,#mmnn SUB IY,#mmnn CP BA,#mmnn CP HL,#mmnn CP IX,#mmnn CP IY,#mmnn AND [BR:ll],#nn OR [BR:ll],#nn XOR [BR:ll],#nn CP [BR:ll],#nn BIT [BR:ll],#nn LD [BR:ll],#nn PACK UPCK
E CARS C,rr CARS NC,rr CARS Z,rr CARS NZ,rr JRS C,rr JRS NC,rr JRS Z,rr JRS NZ,rr CARL C,qqrr CARL NC,qqrr CARL Z,qqrr CARL NZ,qqrr JRL C,qqrr JRL NC,qqrr JRL Z,qqrr JRL NZ,qqrr
F CARS rr JRS rr CARL qqrr JRL qqrr JP HL DJR NZ,rr SWAP A SWAP [HL] RET RETE RETS CALL [hhll] INT [kk] JP [kk] NOP

2nd operation code (1st operation code = CE)

L\H 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 ADD A,[IX+dd] ADD A,[IY+dd] ADD A,[IX+L] ADD A,[IY+L] ADD [HL],A ADD [HL],#nn ADD [HL],[IX] ADD [HL],[IY] ADC A,[IX+dd] ADC A,[IY+dd] ADC A,[IX+L] ADC A,[IY+L] ADC [HL],A ADC [HL],#nn ADC [HL],[IX] ADC [HL],[IY]
1 SUB A,[IX+dd] SUB A,[IY+dd] SUB A,[IX+L] SUB A,[IY+L] SUB [HL],A SUB [HL],#nn SUB [HL],[IX] SUB [HL],[IY] SBC A,[IX+dd] SBC A,[IY+dd] SBC A,[IX+L] SBC A,[IY+L] SBC [HL],A SBC [HL],#nn SBC [HL],[IX] SBC [HL],[IY]
2 AND A,[IX+dd] AND A,[IY+dd] AND A,[IX+L] AND A,[IY+L] AND [HL],A AND [HL],#nn AND [HL],[IX] AND [HL],[IY] OR A,[IX+dd] OR A,[IY+dd] OR A,[IX+L] OR A,[IY+L] OR [HL],A OR [HL],#nn OR [HL],[IX] OR [HL],[IY]
3 CP A,[IX+dd] CP A,[IY+dd] CP A,[IX+L] CP A,[IY+L] CP [HL],A CP [HL],#nn CP [HL],[IX] CP [HL],[IY] XOR A,[IX+dd] XOR A,[IY+dd] XOR A,[IX+L] XOR A,[IY+L] XOR [HL],A XOR [HL],#nn XOR [HL],[IX] XOR [HL],[IY]
4 LD A,[IX+dd] LD A,[IY+dd] LD A,[IX+L] LD A,[IY+L] LD [IX+dd],A LD [IY+dd],A LD [IX+L],A LD [IY+L],A LD B,[IX+dd] LD B,[IY+dd] LD B,[IX+L] LD B,[IY+L] LD [IX+dd],B LD [IY+dd],B LD [IX+L],B LD [IY+L],B
5 LD L,[IX+dd] LD L,[IY+dd] LD L,[IX+L] LD L,[IY+L] LD [IX+dd],L LD [IY+dd],L LD [IX+L],L LD [IY+L],L LD H,[IX+dd] LD H,[IY+dd] LD H,[IX+L] LD H,[IY+L] LD [IX+dd],H LD [IY+dd],H LD [IX+L],H LD [IY+L],H
6 LD [HL],[IX+dd] LD [HL],[IY+dd] LD [HL],[IX+L] LD [HL],[IY+L] LD [IX],[IX+dd] LD [IX],[IY+dd] LD [IX],[IX+L] LD [IX],[IY+L]
7 LD [IY],[IX+dd] LD [IY],[IY+dd] LD [IY],[IX+L] LD [IY],[IY+L]
8 SLA A SLA B SLA [BR:ll] SLA [HL] SLL A SLL B SLL [BR:ll] SLL [HL] SRA A SRA B SRA [BR:ll] SRA [HL] SRL A SRL B SRL [BR:ll] SRL [HL]
9 RL A RL B RL [BR:ll] RL [HL] RLC A RLC B RLC [BR:ll] RLC [HL] RR A RR B RR [BR:ll] RR [HL] RRC A RRC B RRC [BR:ll] RRC [HL]
A CPL A CPL B CPL [BR:ll] CPL [HL] NEG A NEG B NEG [BR:ll] NEG [HL] SEP HALT SLP
B AND B,#nn AND L,#nn AND H,#nn OR B,#nn OR L,#nn OR H,#nn XOR B,#nn XOR L,#nn XOR H,#nn CP B,#nn CP L,#nn CP H,#nn CP BR,#hh
C LD A,BR LD A,SC LD BR,A LD SC,A LD NB,#bb LD EP,#pp LD XP,#pp LD YP,#pp LD A,NB LD A,EP LD A,XP LD A,YP LD NB,A LD EP,A LD XP,A LD YP,A
D LD A,[hhll] LD B,[hhll] LD L,[hhll] LD H,[hhll] LD [hhll],A LD [hhll],B LD [hhll],L LD [hhll],H MLT DIV
E JRS LT,rr JRS LE,rr JRS GT,rr JRS GE,rr JRS V,rr JRS NV,rr JRS P,rr JRS M,rr JRS F0,rr JRS F1,rr JRS F2,rr JRS F3,rr JRS NF0,rr JRS NF1,rr JRS NF2,rr JRS NF3,rr
F CARS LT,rr CARS LE,rr CARS GT,rr CARS GE,rr CARS V,rr CARS NV,rr CARS P,rr CARS M,rr CARS F0,rr CARS F1,rr CARS F2,rr CARS F3,rr CARS NF0,rr CARS NF1,rr CARS NF2,rr CARS NF3,rr

3nd operation code (1st operation code = CF)

L\H 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 ADD BA,BA ADD BA,HL ADD BA,IX ADD BA,IY ADC BA,BA ADC BA,HL ADC BA,IX ADC BA,IY SUB BA,BA SUB BA,HL SUB BA,IX SUB BA,IY SBC BA,BA SBC BA,HL SBC BA,IX SBC BA,IY
1 Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code CP BA,BA CP BA,HL CP BA,IX CP BA,IY Undefined Code Undefined Code Undefined Code Undefined Code
2 ADD HL,BA ADD HL,HL ADD HL,IX ADD HL,IY ADC HL,BA ADC HL,HL ADC HL,IX ADC HL,IY SUB HL,BA SUB HL,HL SUB HL,IX SUB HL,IY SBC HL,BA SBC HL,HL SBC HL,IX SBC HL,IY
3 Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code CP HL,BA CP HL,HL CP HL,IX CP HL,IY Undefined Code Undefined Code Undefined Code Undefined Code
4 ADD IX,BA ADD IX,HL ADD IY,BA ADD IY,HL ADD SP,BA ADD SP,HL Undefined Code Undefined Code SUB IX,BA SUB IX,HL SUB IY,BA SUB IY,HL SUB SP,BA SUB SP,HL Undefined Code Undefined Code
5 Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code CP SP,BA CP SP,HL Undefined Code Undefined Code
6 ADC BA,#mmnn ADC HL,#mmnn SBC BA,#mmnn SBC HL,#mmnn Undefined Code Undefined Code Undefined Code Undefined Code ADD SP,#mmnn Undefined Code SUB SP,#mmnn Undefined Code CP SP,#mmnn Undefined Code LD SP,#mmnn Undefined Code
7 LD BA,[SP+dd] LD HL,[SP+dd] LD IX,[SP+dd] LD IY,[SP+dd] LD [SP+dd],BA LD [SP+dd],HL LD [SP+dd],IX LD [SP+dd],IY LD SP,[hhll] Undefined Code Undefined Code Undefined Code LD [hhll],SP Undefined Code Undefined Code Undefined Code
8 Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code
9 Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code
A Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code
B PUSH A PUSH B PUSH L PUSH H POP A POP B POP L POP H PUSH ALL PUSH ALE Undefined Code Undefined Code POP ALL POP ALE Undefined Code Undefined Code
C LD BA,[HL] LD HL,[HL] LD IX,[HL] LD IY,[HL] LD [HL],BA LD [HL],HL LD [HL],IX LD [HL],IY Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code Undefined Code
D LD BA,[IX] LD HL,[IX] LD IX,[IX] LD IY,[IX] LD [IX],BA LD [IX],HL LD [IX],IX LD [IX],IY LD BA,[IY] LD HL,[IY] LD IX,[IY] LD IY,[IY] LD [IY],BA LD [IY],HL LD [IY],IX LD [IY],IY
E LD BA,BA LD BA,HL LD BA,IX LD BA,IY LD HL,BA LD HL,HL LD HL,IX LD HL,IY LD IX,BA LD IX,HL LD IX,IX LD IX,IY LD IY,BA LD IY,HL LD IY,IX LD IY,IY
F LD SP,BA LD SP,HL LD SP,IX LD SP,IY LD HL,SP LD HL,PC Undefined code Undefined code LD BA,SP LD BA,PC LD IX,SP Undefined code Undefined code Undefined code LD IY,SP Undefined code

Illegal Instructions

NOTE: This document is now out of date, as should be updated to the new mnemonic and register naming

The entire opcode table has been evaluated on Pokemon Mini units and new and exotic illegal opcodes have been found.

These opcodes are not officially supported (they are not used by commercial games and not even found in the Pokemon Channel emulator) and can produce random results or crashes in some cases. The illegal opcodes have been documented on this page's Discussion page.