📄 grun_93.hpl
字号:
; Orange programmer module v3.2
; (c) 2000 Alex Plusov, Valery Fomin
; CHIP=Grundig Car Radio with 24C01 (128x8) or 24C02 (256x8) SEEPROM
; For model with code 1999 limit!
SOCKET=2
PINO=CLK,0
PINO=DI,1
PINO=CS,2
PINO=ORG,3
PINI=DO,1
CDELAY=5 ; one set delay
;R8=CRC,H
R9=Code,D
[INIT]
ORG=1
[READ]
CS=0
CLK=0
CS=1
DI=1,CLK=1,CLK=0 ; start bit
DI=1,CLK=1,CLK=0 ; \ read instruction
DI=0,CLK=1,CLK=0 ; /
LOOP=ADR(5,0){DI=I,CLK=1,CLK=0} ; out adr
DI=1
LOOP=DATA(15,0){CLK=1,CLK=0,I=DO} ; read data word
CS=0
[WRITEINIT]
CS=0
CLK=0
CS=1
DI=1,CLK=1,CLK=0 ; start bit
CONST=0x30
LOOP=CONST(7,0){DI=I,CLK=1,CLK=0} ; out EWEN
CS=0
[WRITE]
CS=0
CLK=0
CS=1
DI=1,CLK=1,CLK=0 ; start bit
DI=0,CLK=1,CLK=0 ; \ write instruction
DI=1,CLK=1,CLK=0 ; /
LOOP=ADR(5,0){DI=I,CLK=1,CLK=0} ; out adr
LOOP=DATA(15,0){DI=I,CLK=1,CLK=0} ; write data word
CS=0,DI=1,CS=1 ; check status
P=10000
DO?1
CS=0
[_CALCULATE]
R4=R0,R4=/16 ;>>4
R5=R1,R5=/16 ;>>4
R4=^R5
R4=^0FH
R4=&7 ;C1
R5=R0,R5=/16 ;>>4 ;C2
R6=R0,R6=&0FH
R5=^R6
R6=R1,R6=/16 ;>>4 ;C3
R6=^R5
R9=R6
R5=<<4,R9=|R5
R4=<<8,R9=|R4
PRINT=("Code: %04lu",R9)
[CalcCode] ;from buffer
R9=0
ADR=00H,R0=DATA
R1=R0,R1=/256,R0=&0xFF
ADR=01H,R2=DATA
R3=R2,R3=/256,R2=&0xFF
R8=R0,R8=^R2
R5=R1,R5=^R3,R5=<<8
R8=|R5
R8?3412H{R8=R0,R0=R1,R1=R8,R8=R2,R2=R3,R3=R8,R8=1234H} ;Swapped bytes?
R8?1234H{ ;Check CRC
_CALCULATE
EXIT
}
PRINT=("Dump broken!")
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -