	.CODE
ROM			EQU	2000H

PE	Bit	INT1
Busy	Bit	T1
STB	Bit	INT0
Ready	Bit	T0
KodePaperError	EQU	01H
KodePaperReady	EQU	02H


	Org	ROM			;Reset Vector
	Ajmp	Start			;
	Org	ROM+3H			;External Interrupt 0 Vector
	Reti				;
	Org	ROM+0BH			;Timer 0 Interrupt Vector
	Reti				;
	Org	ROM+13H			;External Interrupt 1 Vector
	Reti				;
	Org	ROM+1BH			;Timer 1 Interrupt Vector
	Reti				;
	Org	ROM+23H			;Serial Interrupt Vector
	Ajmp	Serial_Interrupt

Start:
	Acall	Init_Serial
	Jnb	Ready,*			;Tunggu Printer siap
	CLR   	RI
	Clr	TI
	Setb	EA
	Setb	ES

Loop:
	Jnb	PE,*
	Mov	A,#KodePaperError
	Lcall	Serial_Out
	Jb	PE,*
	Mov	A,#KodePaperReady
	Lcall	Serial_Out
	Ajmp	Loop	
	


Serial_Interrupt:
	Clr	RI
	Clr	TI
	Clr	ES
        MOV   	A,SBUF                         
	Acall	KirimkePrinter
	Setb	ES
	Reti


Init_Serial:
	MOV     SCON,#52H        	; Mode 1 Ren
	MOV	TMOD,#20H        	; T0 Mode 2, T1 Mode 2
	MOV	TH1,#0D0H        	; 600 Baudrate
	MOV     TCON,#040H       	; T1 On, T0 Off
	MOV     PCON,#00H        	;
	Clr	RI			; Hapus Flag Receive
	Clr	TI			; Hapus Flag Transmit
	RET   

KirimkePrinter:
	Jb	Busy,*			;Printer Busy, tunggu
	Mov	P1,A
	Clr	STB
	Setb	STB
	Ret	


Serial_Out:
	Clr	ES
	Clr	TI
	MOv	SBUF,A
	Jnb	TI,*
	Clr	TI
	Setb	ES
	Ret
