⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 int_prc.asm

📁 Source code for micro printer driver
💻 ASM
字号:
;########################################################################################
;<1>Original Designer:
;
;<2>Name: INT_PRC.ASM
;
;<3>Function: Timer & KBI &SCI interrupt process
;
;########################################################################################

;-------------------------------------------------------
RCV_OK		EQU	$97		;
RCV_FAIL	EQU	$93		;BUFFER OVERFLOW,NEED WAIT TO SEND CONTENTS
RCV_ERROR	EQU	$91
RCV_START	EQU	$07  		;R
RCV_END		EQU	$09  		;E		
PRINT_END	EQU	$05  		;Z

;============INTERNAL CONSTANT DEFINITION===============
;-------------------------------------------------------
$MACRO	M_CLR_SCI_FLAG					;
	LDA	SCS1					;
	LDA	SCDR					;
$MACROEND						;
;-------------------------------------------------------

;=======================================================
INT_SCI_PRC:						;
	PSHH						;
	BRSET	FRAM_FULL,PRINT_STATUS,L_SND_FAIL
	BRSET	FIN_BUFFER,F_STATUS,L_SND_FAIL
	BRSET	ON_PRINTING,F_STATUS,L_SND_FAIL
	BRSET	PRN_START,F_STATUS,L_SND_FAIL
	M_CLR_SCI_FLAG					;clear SCI receiver interrupt flag
	CMP	#PRINT_END				;Add end flags
	BEQ	L_PRINT_END
	BCLR	FIN_BUFFER,F_STATUS
	CMP	#RCV_START				;
	BEQ	L_SET_SNDOK
	BRCLR	STARTF,TEST_FLAGS,L_SND_ERROR		;041111 For start char check
	CMP	#$7F					;04/10/29 All printerable chars
	BHS	L_SND_ERROR
	STA	WRITE_BYTE
	BSET	FRAM_WRF,F_STATUS
	JMP	SCI_RX_EXIT
L_PRINT_END:
	BSET	FIN_BUFFER,F_STATUS
	BSET	FRAM_WRF,F_STATUS
	BCLR	STARTF,TEST_FLAGS
	JSR	S_SND_FAIL
	JMP	SCI_RX_EXIT
L_SND_FAIL:
	JSR	S_SND_FAIL
	JMP	SCI_RX_EXIT
L_SET_SNDOK:
	JSR	S_SND_OK
	JMP	SCI_RX_EXIT
L_SND_ERROR:
	JSR	S_SND_ERROR
	BRN	L_SND_ERROR
SCI_RX_EXIT:
	BRCLR 	SND_FLAGS,TEST_FLAGS,L_NO_SND_INFOR
	BCLR 	SND_FLAGS,TEST_FLAGS
	JSR  	S_CHAR_TXD
L_NO_SND_INFOR:
	PULH						;
	RTI						;
;=======================================================

INT_SCI_ERROR:
	M_CLR_SCI_FLAG
	JSR	S_SND_ERROR
	RTI

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
;INT_SCI_TXD:
;	PSHH
;	LDA	SCS1
;	BSET	SND_COMPLETE,F_STATUS
;	PULH
;	RTI

S_SND_ERROR:
	BSET 	SND_FLAGS,TEST_FLAGS
	BCLR	STARTF,TEST_FLAGS			;041030 For start char check
	LDX	#RCV_ERROR
;	STA	SND_TEMP
;	JSR	S_WR_SND_BUFFER
;	JSR	S_RESET_INDEX
	JSR	S_RESET_INDEX1				;041030 If error,resend all
	RTS
	
S_SND_OK:
	BSET 	SND_FLAGS,TEST_FLAGS
	BSET	STARTF,TEST_FLAGS			;041030 For start char check
	JSR	S_RESET_INDEX1
	LDX	#RCV_OK
	RTS
	
S_SND_FAIL:
	BSET 	SND_FLAGS,TEST_FLAGS
	LDX	#RCV_FAIL
;	STA	SND_TEMP
;	JSR	S_WR_SND_BUFFER				;
	RTS
	
S_SND_STATUS:
	BSET 	SND_FLAGS,TEST_FLAGS
	LDX	#PRINT_STATUS
;	STA	SND_TEMP
;	JSR	S_WR_SND_BUFFER				;
	RTS

;S_WR_SND_BUFFER:
;	PSHH
;	CLRH
;	LDX	SND_WR_INDEX
;	CMP	#$0B
;	BHS	L_CLR_WR_INDEX
;	LDA	SND_TEMP
;	STA	SND_BUFFER,X
;	INCX
;	STX	SND_WR_INDEX
;L_CLR_WR_INDEX:
;	PULH
;	RTS
	
	
S_RESET_INDEX:
	CLR	STORE_INDEX
	CLR	READ_INDEX
	RTS

S_RESET_INDEX1:
	PSHH
	CLRH
	CLRX
	STHX	WR_INDEX
	STHX	RD_INDEX
	PULH
	RTS

;=======================================================	
S_CHAR_TXD1:
	PSHH
	BRCLR	PBIT7,SCS1,L_WAIT_NEXT
	CLRH
	LDX	SND_RD_INDEX
	LDA	SND_BUFFER,X
	INCX
	STX	SND_RD_INDEX
	TAX
	STA	SND_TEMP
L_WAIT_NEXT:
	PULH
	RTS						;
;=======================================================

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++
S_CHAR_TXD:
;	BRCLR	PBIT7,SCS1,L_WAIT_NEXT1
	LDA	SCS1
	STX	SCDR
;L_WAIT_NEXT1:
	RTS	
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++

INT_KEYBOARD_PRC:
	NOP
	LDA	KBSCR			;CLR	INT FLAG
	BRCLR	PBIT2,PTA,L_FILTER_OK
	BRN	INT_KEYBOARD_PRC
	BRN	INT_KEYBOARD_PRC
	BRCLR	PBIT2,PTA,L_FILTER_OK
	BCLR	LR_KEYF,F_STATUS
	JMP	L_NOISE_KB
L_FILTER_OK:
	BSET	LR_KEYF,F_STATUS
L_NOISE_KB:	
	RTI
	
INT_TM1_CH0_PRC:
	PSHH
	LDA	T1SC0
	BCLR	PBIT7,T1SC0
	BRSET	HSW,PTA,L_WAIT_HW			;BRCLR	HSW,PTA,L_WAIT_HW
	BSET	PRINTING,F_STATUS
	LDA	DOT_CNT
	INCA	
	CMP	#$8A
	BLS	L_KEEP_138
	LDA	#$8A
L_KEEP_138:
	STA	DOT_CNT
	JMP	L_TIMER_END
L_WAIT_HW:
	CLR	DOT_CNT
	CLR	DOT_CNT1
	JSR	S_CLR_PTB_PTD				;test 2004/11/07
	BCLR	LR_FLAG,PRINT_STATUS
	BCLR	PRINTING,F_STATUS
	LDA	TEMP_VAL
	STA	IF_CONTINUE
	CLR	TEMP_VAL
L_TIMER_END:
	PULH
	RTI
	
S_TEST_PIN:
	BRSET	TEST_PIN,PTB,L_CLR_IT
	BSET	TEST_PIN,PTB
	JMP	L_DO_REST
L_CLR_IT:
	BCLR	TEST_PIN,PTB
L_DO_REST:
	RTS

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -