home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Set of Apple II Hard Drive Images
/
eric.hdv
/
OBJSRC
/
COMMTEST.txt
< prev
next >
Wrap
Text File
|
2020-08-13
|
3KB
|
136 lines
; MIDI INPUT DISPLAY
;
ORG $6000
;
JSR $FC58 ;CLR SCRN
LOOP LDA ERRORS
BEQ NOERRS
LDA #$87
JSR $FDED
LDA #$00
STA ERRORS
NOERRS LDA $C000
BPL NOKEY
AND #$7F
CMP #$03
BEQ EXIT
LDA $C000
STA $C010
;;;; JSR COMOUT
;
NOKEY JSR COMTIN
BEQ LOOP
JSR COMINP
JSR $FDDA
JMP LOOP
;
EXIT JSR COMCLS
RTS
;
; **** COMMUNICATIONS SUBROUTINES ****
;
CCCOM EQU $C0A8
CCSTS EQU $C0A8
CCDTA EQU $C0A9
;
MLI EQU $BF00
;
;INITIALIZE COMM LINE
;--------------------
COMINT LDA #$00
STA CIRCS
STA CIRCE ;START CIRCULAR BUFFER PTRS
JSR MLI
DFB $40
DW APARMS
LDA #$13
STA CCCOM
LDA #$11
STA CCCOM ;DISABLE INTERRUPTS
LDX CCDTA ;THROW AWAY ANY GARBAGE DATA
ORA #$80 ;ENABLE INTERRUPTS
STA CCCOM
RTS
;
;COMM LINE INTERRUPT HANDLER
;---------------------------
COMIRQ LDA CCSTS
BNE COMME
SEC ;NOT MINE
RTS
COMME PHA
AND #$70 ;ANY ERRORS?
BEQ COMNE
INC ERRORS ;YES-BUMP ERR CNT
COMNE PLA
AND #$01 ;ANY DATA?
BEQ CLAIM
LDA CCDTA ;GET INCOMING BYTE
LDX CIRCE
STA CIRC,X ;STORE AT END OF BUFR
INX
STX CIRCE
CPX CIRCS ;WRAPAROUND?
BNE CLAIM
INC ERRORS ;OVERRUN ERROR
DEC CIRCE ;BACK UP END POINT
CLAIM CLC
RTS
;
;TEST CIRC BUFR FOR INPUT
;------------------------
COMTIN SEI
LDX CIRCS
CPX CIRCE
CLI
RTS ;IF ZERO, NO DATA YET
;
;WAIT FOR INPUT, RETURN IN A REG
;-------------------------------
COMINP JSR COMTIN
BEQ COMINP ;WAIT
SEI
LDX CIRCS ;GET BYTE FROM Q
LDA CIRC,X
INX
STX CIRCS
CLI
RTS
;
;SEND BYTE OUT FROM A REG
;------------------------
COMOUT PHA
COMOL LDA CCSTS
AND #$02 ;WAIT FOR TDRE
BEQ COMOL
PLA
STA CCDTA
RTS
;
;CLOSE COMM PORT
;---------------
COMCLS LDA #$13
STA CCCOM
LDA #$11
STA CCCOM
CLI
LDA #$01
STA APARMS
JSR MLI
DFB $41
DW APARMS
LDA #$02
STA APARMS
RTS
;
;INTERNAL DATA:
;==============
APARMS DFB 2 ;MLI PARM LIST FOR ALLOC/DEALLOC INT
DFB 0
DW COMIRQ
;
ERRORS DFB 0 ;ERROR COUNTER
CIRCS DFB 0 ;Q START PTR
CIRCE DFB 0 ;Q END PTR
CIRC DS 256 ;CIRC BUFR