; Orange programmer module v1.2
; (c) 2001 qSertorius, CnCLab
; e-mail: qSertorius88@yahoo.com
;
; CHIP=S29194 (64x16) Seiko
; CHIP=S29294 (128x16)
; CHIP=S29394 (256x16)
;
; Tested on S29194,S29394

SOCKET=2

PINO=SK,0
PINO=DI,1
PINO=CS,2
PINO=PROT,3
PINI=DO,1

CDELAY=5 ; one set delay

[READ]
CS=1
SK=1
CS=0
R0=11000000b
LOOP=(7,0){DI=R0[I],SK=0,SK=1}  ; start + read instruction
LOOP=(7,0){DI=ADR[I],SK=0,SK=1}    ; out addr
DI=1
LOOP=(15,0){SK=0,SK=1,DATA[I]=DO}  ; read data word
CS=1

[WRITEINIT]
CS=1
SK=1
CS=0
R0=1001100000000000b
LOOP=(15,0){DI=R0[I],SK=0,SK=1}  ; out start + PEN
CS=1

[WRITE]
CS=1
PROT=0
SK=1
PROT=1
CS=0
R0=10100000b
LOOP=(7,0){DI=R0[I],SK=0,SK=1}  ; start + program instruction
LOOP=(7,0){DI=ADR[I],SK=0,SK=1}    ; out adr
LOOP=(15,0){DI=DATA[I],SK=0,SK=1}  ; write data word
CS=1,DI=0,CS=0
P=12000
DO?1                             ; verify
PROT=0
CS=1