📄 int_prc.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 + -