Skip to content

Instantly share code, notes, and snippets.

@cocus
Last active March 31, 2025 01:27
Show Gist options
  • Save cocus/b64bd087e51b6f67f358b92cba8b0761 to your computer and use it in GitHub Desktop.
Save cocus/b64bd087e51b6f67f358b92cba8b0761 to your computer and use it in GitHub Desktop.
IDA MSM80C31F CPU definition
; Note, add this to the i51.cfg on your ida installation dir.
; The aim is to add support for the OKI MSM80C31F CPU, which is a
; 80C51 variant.
; This is the revision 1 of this gist
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MSM80C31F
; https://www.keil.com/dd/docs/datashts/oki/msm80cx1f_ds.pdf
; MEMORY MAP
area CODE code 0x0000:0x10000
area DATA RAM 0x0000:0x0080
area DATA FSR 0x0080:0x0100
; Interrupt and reset vector assignments
entry RESET 0x0000 RESET
entry IE0 0x0003 External interrupt 0
entry TF0 0x000B Timer 0 interrupt
entry IE1 0x0013 External interrupt 1
entry TF1 0x001B Timer 1 interrupt
entry RI_TI 0x0023 Serial port interrupt
; INPUT/OUTPUT PORTS
P0 0x0080 Port 0
P0.P07 7
P0.P06 6
P0.P05 5
P0.P04 4
P0.P03 3
P0.P02 2
P0.P01 1
P0.P00 0
SP 0x0081 Stack Pointer
DPL 0x0082 Data Pointer, Low Byte
DPH 0x0083 Data Pointer, High Byte
RESERVED0084 0x0084 RESERVED
RESERVED0085 0x0085 RESERVED
RESERVED0086 0x0086 RESERVED
PCON 0x0087 Power Control Register
TCON 0x0088 Timer 0/1 Control Register
TCON.TF1 7
TCON.TR1 6
TCON.TF0 5
TCON.TR0 4
TCON.IE1 3
TCON.IT1 2
TCON.IE0 1
TCON.IT0 0
TMOD 0x0089 Timer Mode Register
TL0 0x008A Timer 0, Low Byte
TL1 0x008B Timer 1, Low Byte
TH0 0x008C Timer 0, High Byte
TH1 0x008D Timer 1, High Byte
RESERVED008E 0x008E RESERVED
RESERVED008F 0x008F RESERVED
P1 0x0090 Port 1
P1.P17 7
P1.P16 6
P1.P15 5
P1.P14 4
P1.P13 3
P1.P12 2
P1.P11 1
P1.P10 0
RESERVED0091 0x0091 RESERVED
RESERVED0092 0x0092 RESERVED
RESERVED0093 0x0093 RESERVED
RESERVED0094 0x0094 RESERVED
RESERVED0095 0x0095 RESERVED
RESERVED0096 0x0096 RESERVED
RESERVED0097 0x0097 RESERVED
SCON 0x0098 Serial Channel Control Register
SCON.SM0 7
SCON.SM1 6
SCON.SM2 5
SCON.REN 4
SCON.TB8 3
SCON.RB8 2
SCON.TI 1
SCON.RI 0
SBUF 0x0099 Serial Channel Buffer Register
RESERVED009A 0x009A RESERVED
RESERVED009B 0x009B RESERVED
RESERVED009C 0x009C RESERVED
RESERVED009D 0x009D RESERVED
RESERVED009E 0x009E RESERVED
RESERVED009F 0x009F RESERVED
P2 0x00A0 Port 2
P2.P27 7
P2.P26 6
P2.P25 5
P2.P24 4
P2.P23 3
P2.P22 2
P2.P21 1
P2.P20 0
RESERVED00A1 0x00A1 RESERVED
RESERVED00A2 0x00A2 RESERVED
RESERVED00A3 0x00A3 RESERVED
RESERVED00A4 0x00A4 RESERVED
RESERVED00A5 0x00A5 RESERVED
RESERVED00A6 0x00A6 RESERVED
RESERVED00A7 0x00A7 RESERVED
IE 0x00A8 Interrupt Enable Register
IE.EA 7
IE.ES 4
IE.ET1 3
IE.EX1 2
IE.ET0 1
IE.EX0 0
RESERVED00A9 0x00A9 RESERVED
RESERVED00AA 0x00AA RESERVED
RESERVED00AB 0x00AB RESERVED
RESERVED00AC 0x00AC RESERVED
RESERVED00AD 0x00AD RESERVED
RESERVED00AE 0x00AE RESERVED
RESERVED00AF 0x00AF RESERVED
P3 0x00B0 Port 3
P3.RD 7
P3.WR 6
P3.T1 5
P3.T0 4
P3.INT1 3
P3.INT0 2
P3.TxD 1
P3.RxD 0
RESERVED00B1 0x00B1 RESERVED
RESERVED00B2 0x00B2 RESERVED
RESERVED00B3 0x00B3 RESERVED
RESERVED00B4 0x00B4 RESERVED
RESERVED00B5 0x00B5 RESERVED
RESERVED00B6 0x00B6 RESERVED
RESERVED00B7 0x00B7 RESERVED
IP 0x00B8 Interrupt Priority Register
IP.PS 4
IP.PT1 3
IP.PX1 2
IP.PT0 1
IP.PX0 0
RESERVED00B9 0x00B9 RESERVED
RESERVED00BA 0x00BA RESERVED
RESERVED00BB 0x00BB RESERVED
RESERVED00BC 0x00BC RESERVED
RESERVED00BD 0x00BD RESERVED
RESERVED00BE 0x00BE RESERVED
RESERVED00BF 0x00BF RESERVED
RESERVED00C0 0x00C0 RESERVED
RESERVED00C1 0x00C1 RESERVED
RESERVED00C2 0x00C2 RESERVED
RESERVED00C3 0x00C3 RESERVED
RESERVED00C4 0x00C4 RESERVED
RESERVED00C5 0x00C5 RESERVED
RESERVED00C6 0x00C6 RESERVED
RESERVED00C7 0x00C7 RESERVED
RESERVED00C8 0x00C8 RESERVED
RESERVED00C9 0x00C9 RESERVED
RESERVED00CA 0x00CA RESERVED
RESERVED00CB 0x00CB RESERVED
RESERVED00CC 0x00CC RESERVED
RESERVED00CD 0x00CD RESERVED
RESERVED00CE 0x00CE RESERVED
RESERVED00CF 0x00CF RESERVED
PSW 0x00D0 Program Status Word Register
PSW.CY 7
PSW.AC 6
PSW.F0 5
PSW.RS1 4
PSW.RS0 3
PSW.OV 2
PSW.F1 1
PSW.P 0
RESERVED00D1 0x00D1 RESERVED
RESERVED00D2 0x00D2 RESERVED
RESERVED00D3 0x00D3 RESERVED
RESERVED00D4 0x00D4 RESERVED
RESERVED00D5 0x00D5 RESERVED
RESERVED00D6 0x00D6 RESERVED
RESERVED00D7 0x00D7 RESERVED
RESERVED00D8 0x00D8 RESERVED
RESERVED00D9 0x00D9 RESERVED
RESERVED00DA 0x00DA RESERVED
RESERVED00DB 0x00DB RESERVED
RESERVED00DC 0x00DC RESERVED
RESERVED00DD 0x00DD RESERVED
RESERVED00DE 0x00DE RESERVED
RESERVED00DF 0x00DF RESERVED
ACC 0x00E0 Accumulator
ACC.ACC7 7
ACC.ACC6 6
ACC.ACC5 5
ACC.ACC4 4
ACC.ACC3 3
ACC.ACC2 2
ACC.ACC1 1
ACC.ACC0 0
RESERVED00E1 0x00E1 RESERVED
RESERVED00E2 0x00E2 RESERVED
RESERVED00E3 0x00E3 RESERVED
RESERVED00E4 0x00E4 RESERVED
RESERVED00E5 0x00E5 RESERVED
RESERVED00E6 0x00E6 RESERVED
RESERVED00E7 0x00E7 RESERVED
RESERVED00E8 0x00E8 RESERVED
RESERVED00E9 0x00E9 RESERVED
RESERVED00EA 0x00EA RESERVED
RESERVED00EB 0x00EB RESERVED
RESERVED00EC 0x00EC RESERVED
RESERVED00ED 0x00ED RESERVED
RESERVED00EE 0x00EE RESERVED
RESERVED00EF 0x00EF RESERVED
B 0x00F0 B-Register
B.B7 7
B.B6 6
B.B5 5
B.B4 4
B.B3 3
B.B2 2
B.B1 1
B.B0 0
RESERVED00F1 0x00F1 RESERVED
RESERVED00F2 0x00F2 RESERVED
RESERVED00F3 0x00F3 RESERVED
RESERVED00F4 0x00F4 RESERVED
RESERVED00F5 0x00F5 RESERVED
RESERVED00F6 0x00F6 RESERVED
RESERVED00F7 0x00F7 RESERVED
RESERVED00F8 0x00F8 RESERVED
RESERVED00F9 0x00F9 RESERVED
RESERVED00FA 0x00FA RESERVED
RESERVED00FB 0x00FB RESERVED
RESERVED00FC 0x00FC RESERVED
RESERVED00FD 0x00FD RESERVED
RESERVED00FE 0x00FE RESERVED
RESERVED00FF 0x00FF RESERVED
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment