home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-05-31 | 2.9 KB | 136 lines | [04] ASCII Text (0x0000) |
- ; 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
-