;******************************************************************************
;               SED13700 CONTROLLER
;******************************************************************************
E_SED   REG     P3.4            ;sed13700
WR_R    REG     P3.7            ;sed13700
CS_R    REG     P3.1            ;sed13700
A0      REG     P3.0            ;sed13700
RST_R   REG     P3.6            ;sed13700
SEL     REG     P3.5            ;sed13700
STP     REG     P2.0
S_S     REG     P2.1

FX      EQU     7FH             ;text x dot size FX+1
FY      EQU     7EH             ;text y dot size FY+1
CR      EQU     7DH             ;character return APL-1
TC_P    EQU     7CH             ;fram purse   12MHz>=[(TC_P)*9+1]*L_F*70Hz
L_F     EQU     7BH             ;y duty L_F+1
APL     EQU     7AH             ;number of text per line
SAD_2L  EQU     79H             ;set address of layer 2 low
SAD_2H  EQU     78H             ;set address of layer 2 high
BCD     EQU     77H             ;delay time set

MAX_COL EQU     320             ;MAX COLUMN(SEGMENT)
MAX_ROW EQU     240             ;MAX ROW(COMMON)
;******************************************************************************
        ORG     0H
;
	MOV	SP,#7FH
;sed13700 reset
        MOV     FX,#87H
        MOV     FY,#07H
        MOV     CR,#MAX_COL / 4 -1	;SET CR FOR 4Gray 
;       MOV     TC_P,#86
        MOV     TC_P,#90          	;SET TC_P FOR 4GRAY
        MOV     L_F,#MAX_ROW - 1
        MOV     APL,#MAX_COL / 4	;SET APL FOR 4GRAY
        MOV     SAD_2L,#60H
        MOV     SAD_2H,#09H
        CALL	DELAY1
        CALL	DELAY1

START:
        SETB    SEL
        CLR     RST_R
        NOP
        NOP
        SETB    RST_R
        NOP
        NOP

;******************************************************************************
SYSTEM_SET:
        MOV     A,#40H
        CALL    COM_W
        CALL	DELAY1 
        MOV     A,#40H
        CALL    COM_W       
        MOV     A,#30H
        CALL    DATA_W
        MOV     A,FX              ;FX
        CALL    DATA_W
        MOV     A,FY              ;FY
        CALL    DATA_W
        MOV     A,CR              ;CR
        CALL    DATA_W
        MOV     A,TC_P            ;TC/R
        CALL    DATA_W
        MOV     A,L_F             ;L/F
        CALL    DATA_W
        MOV     A,APL             ;APL
        CALL    DATA_W
        MOV     A,#00H            ;APH
        CALL    DATA_W

;******************************************************************************
SCROLL:
        MOV     A,#44H
        CALL    COM_W
        MOV     A,#00H
        CALL    DATA_W
        MOV     A,#00H
        CALL    DATA_W
        MOV     A,L_F
        CALL    DATA_W
        MOV     A,SAD_2L
        CALL    DATA_W
        MOV     A,SAD_2H
        CALL    DATA_W
        MOV     A,L_F
        CALL    DATA_W
        MOV     A,#00H
        CALL    DATA_W
        MOV     A,#00H
        CALL    DATA_W
        MOV     A,#00H
        CALL    DATA_W
        MOV     A,#00H
        CALL    DATA_W

;******************************************************************************
HDOT_SCR:
        MOV     A,#5AH
        CALL    COM_W
        MOV     A,#00H            ;NO SCROLL
        CALL    DATA_W

;******************************************************************************
OVERLAY:
        MOV     A,#5BH
        CALL    COM_W
        MOV     A,#00H            ;GRAPHIC & OR
        CALL    DATA_W
        
;******************************************************************************
GRAYSCALE:
        MOV     A,#60H
        CALL    COM_W
        MOV     A,#01H            ;SET GRAYSCAL MODE(00:1--MONO, 01:2--4GRAY , 02:4--16GRAY) 
        CALL    DATA_W        

;******************************************************************************
CSR_FORM:
        MOV     A,#5DH
        CALL    COM_W
        MOV     A,#07H
        CALL    DATA_W
        MOV     A,#87H
        CALL    DATA_W

;******************************************************************************
CSR_DIR:
        MOV     A,#4CH
        CALL    COM_W
        CALL    CL1
        CALL    CL2

;******************************************************************************
DISP_ON:
        MOV     A,#59H
        CALL    COM_W
        MOV     A,#14H
        CALL    DATA_W

;******************************************************************************
;       ALL_ON
;******************************************************************************
ALL_ON:
        CALL    POS2
        MOV     A,#42H
        CALL    COM_W
        CALL    CL2
        CALL    CL1
        MOV	A,#0
        PUSH	A
        MOV	A,#55H
        PUSH	A
        MOV	A,#AAH        
        PUSH	A
        MOV	R7,#FFH
        MOV	R5,#4
$LL0:   MOV	R4,#60       
$LL1:   MOV	R3,#80
$LL2:   MOV	A,R7
        SWAP	A
        ORL	A,R7
        CALL    DATA_W
        DJNZ    R3,$LL2
        DJNZ    R4,$LL1
        POP	A
        MOV	R7,A
        DJNZ	R5,$LL0
        
        JMP	$
;******************************************************************************
;sed1330 funtion
COM_W:
         MOV     P1,A
         SETB    A0
         CLR     CS_R
         CLR     WR_R
         NOP
         SETB    WR_R
         RET

;******************************************************************************
DATA_W:
         MOV     P1,A
         CLR     A0
         CLR     CS_R
         CLR     WR_R
         NOP
         SETB    WR_R
         RET

;******************************************************************************
;CLEAR LAYER 1
CL1:    CALL    POS1
        MOV     A,#42H
        CALL    COM_W
        MOV     R0,#30
L1:     MOV     R1,APL
L2:     MOV     A,#00H
        CALL    DATA_W
        DJNZ    R1,L2
        DJNZ    R0,L1
        RET

;******************************************************************************
;CLEAR LAYER 2
CL2:    CALL    POS2
        MOV     A,#42H
        CALL    COM_W
        MOV     R0,#240
L3:     MOV     R1,APL
L4:     MOV     A,#0H
        CALL    DATA_W
        DJNZ    R1,L4
        DJNZ    R0,L3
        RET

;******************************************************************************
;POSITION 1
POS1:   MOV     A,#46H
        CALL    COM_W
        MOV     A,#00H
        CALL    DATA_W
        MOV     A,#00H
        CALL    DATA_W
        RET

;******************************************************************************
;POSITION 1 SHIFT 30
POS11:  MOV     A,#46H
        CALL    COM_W
        MOV     A,#MAX_COL / 8
        CALL    DATA_W
        MOV     A,#00H
        CALL    DATA_W
        RET

;******************************************************************************
;POSITION 2
POS2:   MOV     A,#46H
        CALL    COM_W
        MOV     A,SAD_2L
        CALL    DATA_W
        MOV     A,SAD_2H
        CALL    DATA_W
        RET

;*******************************************************************************
;               Procedure of step by step and scan
;*******************************************************************************
STP_SC:
        MOV     C,S_S
        JC      STEP
        RET
STEP:
        MOV     C,STP
        MOV     R5,#0FH
LOPE:
        MOV     R6,#0FFH
LOPD:
        DJNZ    R6,LOPD
        DJNZ    R5,LOPE
        JNB     S_S,LOUT
        JNC     STEP
LOUT:
        RET
;*******************************************************************************
;               BCD DELAY TIME SELECT
;*******************************************************************************
CBCD:
        MOV     P0,#00H
        PUSH    A
        MOV     A,P0
        ANL     A,#0FH
        RL      A
        RL      A
        MOV     BCD,A
        POP     A
        RET
;*******************************************************************************
DELAY:
	
        CALL    CBCD
        MOV     R4,BCD
LOPC:
        MOV     R5,#100
LOPB:
        MOV     R6,#250
LOPA:
        DJNZ    R6,LOPA
        DJNZ    R5,LOPB
        DJNZ    R4,LOPC
        CPL     SEL
        RET

;*******************************************************************************
DELAY1:
	MOV	R4,#0
	DJNZ	R4,$
	RET  
        

;*******************************************************************************
END
