 
;===================================================================
;
;			SMART MEDIA CARD
;
;===================================================================
 
;--------------
; INIT SMC MODE
;--------------
 
; :init_smc_play_mode
;------------------  
LD	MSB 0
LD	LSB 15
LD	DDR_PARALLEL
 
LD	OR_PARALLEL
 
LD	LSB 10
LD	DR_PARALLEL
 
LD	LSB 6
LD	DDR_MPEG
 
LD	OR_MPEG
NOP
 
LD	LSB 0
LD	DR_MPEG 
 
LD	LSB 9		; DATA_FLASH Port driven by FCI  
LD	MSB 0		; data_flash port = intput
LD	CTRL_FCI	; PARALLEL Port driven by FCI
 
LD	LSB 1
LD	MSB 0
LD	X		; X<=1
 
LD	MASK		; MASK = 1 ( used for XOR fct )
 
STATUS	STOP		; end of INIT
 
;---------------------
; SMC_DTC_Dummy_Write
;---------------------
 
LD	MSB 0
LD	LSB 9		; DATA_FLASH Port driven by FCI  
LD	CTRL_FCI	; PARALLEL Port driven by FCI
 
LD	LSB 0
LD	ADR_BUFFER01
LD	LSB 14
LD	MSB 15
LD	ADR_BUFFER00
LD	A DATA_BUFFER0
LD	CMP00		; load the even/odd bit
LD	LSB 15
LD	MSB 15
LD	MASK
LD	ADR_BUFFER00
LD	A DATA_BUFFER0
LD	Y		; load number of pages
DECY
 
; :dummy_write
;-----------
LD	A CMP00
XOR
LD	CMP00		; change the parity bit
BCLR1
JP :wait_buffer1_full
 
; :wait_buffer0_full
LD	A BUFFER_MNGT
BCLR3
JP :wait_buffer0_full
 
; :release_buffer0
;---------------
LD	A BUFFER_MNGT
BSET1
LD	BUFFER_MNGT
 
CP	ALWAYS
JP :update_buffer_flag
 
 
; :wait_buffer1_full
LD	A BUFFER_MNGT
BCLR4
JP :wait_buffer1_full
 
; :release_buffer1
;---------------
LD	A BUFFER_MNGT
BSET2
LD	BUFFER_MNGT
 
 
; :update_buffer_flag
;------------------
LD	LSB 0		; clear the buffer full flags
LD	BUFFER_MNGT
 
LD	A Y
LD	DATA_BUFFER0
DECY
JP :dummy_write
 
STATUS	STOP
