home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Vectronix 2
/
VECTRONIX2.iso
/
FILES_01
/
MIDICOM.LZH
/
MC_DRIVE.R
/
DRIVER.SER
/
AUXOUT.S
next >
Wrap
Text File
|
1993-10-18
|
2KB
|
48 lines
.export MSEND
.import iorec
MSEND: move.l A0,BUF ;Datenbereich
move.w D0,COUN1 ;anzahl Bytes zu übertragen
movem.l D2-D4/A2-A3,-(SP) ;REGISTER RETTEN
*SENDE ANZAHL BYTES UEBER MIDI
bsr.s PACKS
MBACK: movem.l (SP)+,D2-D4/A2-A3 ;REGISTER ZURUECKSCHREIBEN
rts
*SENDESCHLEIFE FUER seriell
PACKS: clr.l D0
move.w COUN1,D0 ;D0= LEN
subq.w #1,d0 ;Nur COUN-1 Bytes in den Puffer
beq.s EPACK ; GOTO ENDE
movea.l BUF,A1 ;A1= ^ARRAY OF BYTE
movea.l iorec,A2
movea.l (A2),A3 ;Sendepuffer
move.w 4(A2),D3 ;size
PLOOP0: move.w 8(A2),D2 ;schreibzeiger
move.w 6(A2),D4 ;lesezeiger
PLOOP1: addq.w #1,D2
cmp.w D2,D4
beq.s PLOOP0
cmp.w D2,D3
bne.s PBYTE
moveq #0,D2
PBYTE: move.b (A1)+,0(A3,D2.w)
move.w D2,8(A2)
dbcs D0,PLOOP1
* COUN-1 Bytes im Puffer. Das letzte normal über BS
* aktiviert shön den Interrupt, wie es sich gehört.
move.b (a1),d0 ;Das letzte Zeichen
move.w d0,-(SP)
move.w #1,-(SP) ;Device = 1
movea.l $582,A0 ;XCONOUT
jsr (a0)
addq.l #4,sp
EPACK: rts
COUN1: dc.w 0
BUF: dc.l 0