📄 edac.asm
字号:
BNE CHKCOM0
JMP RESET
CHKCOM0 JSR DATOUT
CMPA #'I' if 'I' received from host then perform
BNE CHKCOM1 digital input
JSR DIGIN
BRA CHKCOME
CHKCOM1 CMPA #'O' if 'O' received from host then perform
BNE CHKCOME digital output
JSR DIGOUT
CHKCOME LDAA #0
RTS
PAGE
*****************************************************************************
**
** TITLE: Input and Output a full byte on TERMINAL port
**
** DATE: 3/15/91
**
** PURPOSE: To read and write a full 8-bit value from host
**
** METHOD: Waits for TxRDY (DATOUT) or TxRDY (DATIN) and either gives
** or receives a byte from the ACIA.
**
** CALLING
** CONVENTION: DATOUT, DATIN
**
** INPUT: Byte in Acc or RS232 via TERMINAL port from host.
**
** OUTPUT: RS232 via TERMINAL port to host or byte in Acc.
**
** DESIGNER(S): Danial J. Neebel
**
** PROGRAMMER: Danial J. Neebel
**
** NOTES:
**
*****************************************************************************
TXRDY EQU %00000010
TDRE EQU %10000000
RXRDY EQU %00000001
RDRF EQU %00100000
RXERR EQU %01110000
SCIERR EQU %00001110
* Checks if an ACIA is present and if so outputs to ACIA
* if no ACIA is present then outputs on SCI
DATOUT PSHX
BRCLR FLAGS ACIASCI OUTSCI if SCI is commport jump to SCI handler
DATOUT1 LDX #ACIA
LDAB 0,X
BITB #TXRDY
BEQ DATOUT1
STAA 1,X
OUTSCIE PULX
RTS
OUTSCI LDX #REGBAS
OUTSCI1 LDAB SCSR,X read status
BITB #TDRE
BEQ OUTSCI1 loop until tdre=1
STAA SCDAT,X send character
BRA OUTSCIE
* END OF DATOUT
DATIN PSHX
BCLR FLAGS RCVDAT
BRCLR FLAGS ACIASCI INSCI if SCI is commport jump to SCI handler
LDX #ACIA check status
LDAB 0,X
BITB #RXERR
BNE DATERR status = error exit with error
CLRA
BITB #RXRDY
BEQ DATINE no data, return
LDAA 1,X
BSET FLAGS RCVDAT data received set flag
DATINE PULX
RTS
DATERR BSET FLAGS RCVERR set receive error
CLRA return 0
PULX
RTS
INSCI LDX #REGBAS
LDAB SCSR,X read status reg
BITB #SCIERR check for error status.
BNE DATERR
BITB #RDRF check for data received
BEQ DATINE exit jump if rdrf=0
LDAA SCDAT,X read data register
BSET FLAGS RCVDAT data received set flag
BRA DATINE
* END OF DATIN
PAGE
*****************************************************************************
**
** TITLE: Get sample delay from host
**
** DATE: 3/9/91
**
** PURPOSE: This routine gets the sample delay
**
** METHOD: The host computer should calculate the delay in clock ticks
** for the EVB.
**
** CALLING
** CONVENTION: GETDELAY
**
** INPUT: RS232 via TERMINAL port from host.
**
** OUTPUT:
**
** DESIGNER(S): Danial J. Neebel
**
** PROGRAMMER: Danial J. Neebel
**
** NOTES:
**
*****************************************************************************
GETDELAY JSR TERMARG
STD DELAY
RTS
* END OF GETDELAY
*****************************************************************************
**
** TITLE: Get number of channels
**
** DATE: 3/9/91
**
** PURPOSE: The EVB needs to know how many channels to send to host
**
** METHOD:
**
** CALLING
** CONVENTION: GETCHAN
**
** INPUT: RS232 via TERMINAL port from host.
**
** OUTPUT:
**
** DESIGNER(S): Danial J. Neebel
**
** PROGRAMMER: Danial J. Neebel
**
** NOTES:
**
*****************************************************************************
GETCHAN JSR TERMARG
BITB #$F0 check for too many channels requested
BEQ GETCH1
LDAB #1 if too many requested then set to default 1
GETCH1 STAB CHANMSK
RTS
* END OF GETCHAN
PAGE
*****************************************************************************
**
** TITLE: Terminal Argument
**
** DATE: 3/9/91
**
** PURPOSE: Get a hex argument from the terminal
**
** METHOD: Gets a hex number from the TERMINAL port
**
** CALLING
** CONVENTION: TERMARG
**
** INPUT: RS232 via TERMINAL port from host.
**
** OUTPUT:
**
** DESIGNER(S): Danial J. Neebel
**
** PROGRAMMER: Danial J. Neebel
**
** NOTES:
**
*****************************************************************************
TERMARG CLR SHFTREG
CLR SHFTREG+1
TERM0 JSR DATIN
BRCLR FLAGS RCVDAT TERM0
JSR DATOUT
CLR TMP1 hex indicator
JSR HEXBIN
TST TMP1
BNE TERM3 jump if not hex
BRA TERM0
TERM3 LDD SHFTREG
RTS
*****************
* HEXBIN(a) - Convert the ASCII character in a
* to binary and shift into shftreg. Returns value
* in tmp1 incremented if a is not hex.
*****************
HEXBIN PSHA
PSHB
PSHX
CMPA #'0'
BLT HEXNOT jump if a < $30
CMPA #'9'
BLE HEXNMB jump if 0-9
CMPA #'A'
BLT HEXNOT jump if $39> a <$41
CMPA #'F'
BGT HEXNOT jump if a > $46
ADDA #$9 convert $A-$F
HEXNMB ANDA #$0F convert to binary
LDX #SHFTREG
LDAB #4
HEXSHFT ASL 1,X 2 byte shift through
ROL 0,X carry bit
DECB
BGT HEXSHFT shift 4 times
ORAA 1,X
STAA 1,X
BRA HEXRTS
HEXNOT INC TMP1 indicate not hex
HEXRTS PULX
PULB
PULA
RTS
PAGE
*****************************************************************************
**
** TITLE: Send Digital Input to Host
**
** DATE: 3/16/91
**
** PURPOSE: To allow host to perform digital input from EVB
**
** METHOD: Disables interrupt then sends digital input value to Host then
** enables interrupts.
**
** CALLING
** CONVENTION: DIGIN
**
** INPUT: Port C
**
** OUTPUT: RS232 via TERMINAL port to host.
**
** DESIGNER(S): Danial J. Neebel
**
** PROGRAMMER: Danial J. Neebel
**
** NOTES:
**
*****************************************************************************
DIGIN LDX #REGBAS Get value from port A
LDAA PORTC,X
JSR DATOUT Transmit value to host.
RTS
*****************************************************************************
**
** TITLE: Output a digital output from TERMINAL port to port B.
**
** DATE: 3/16/91
**
** PURPOSE: To allow host to perform digital output.
**
** METHOD: Disables interrupts reads a value from host. Places value
** read from host on PORTB. Then enables interrupts.
**
** CALLING
** CONVENTION: DIGOUT
**
** INPUT: RS232 via TERMINAL port from host.
**
** OUTPUT: PORTB
**
** DESIGNER(S): Danial J. Neebel
**
** PROGRAMMER: Danial J. Neebel
**
** NOTES:
**
*****************************************************************************
DIGOUT JSR DATIN get byte from host
BRSET FLAGS RCVERR DIGOUTE if error do not change port
BRCLR FLAGS RCVDAT DIGOUT if no data recieved then keep looking
LDX #REGBAS output byte to port
STAA PORTB,X
DIGOUTE BCLR FLAGS RCVERR clear receive error
RTS
*****************************************************************************
**
** TITLE: Analog Channel Transfer
**
** DATE: 3/15/91
**
** PURPOSE: Transfer all channels requested
**
** METHOD: Sends 1,2,3, or 4 bytes from the CHANx buffers to the HOST.
**
** CALLING
** CONVENTION: CHNOUT
**
** INPUT: CHANMSK, CHAN1, CHAN2, CHAN3, CHAN4
**
** OUTPUT: RS232 via TERMINAL port to host.
**
** DESIGNER(S): Danial J. Neebel
**
** PROGRAMMER: Danial J. Neebel
**
** NOTES:
**
*****************************************************************************
CHNOUT LDAA CHANMSK set up to store the channels requested
STAA SCRTCH1
LDAA #4 check only 8 channels
STAA SCRTCH2
LDX #CHAN4
CHNOUT1 LSR SCRTCH1 check channel mask
BCC CHNOUT2 channel mask bit = 0, ignore channel
LDAA 0,X
JSR DATOUT channel mask bit = 1, channel data to host
CHNOUT2 INX
DEC SCRTCH2
BNE CHNOUT1
RTS returning here would mean no channels were
* output.
*****************************************************************************
* Timer Interrupt location
*****************************************************************************
* ORG $0FFE6
* OC2INT FDB DACISR
*****************************************************************************
* Reset Vector Location
*****************************************************************************
* ORG $0FFFE
* VRST FDB EDAC
* END OF FILE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -