euh, y a ça aussi:
jsr tios::reset_link ;reset the link interface
move.w #13,-(a7) ;Want to send 13 bytes.
lea linkdata(PC),a0 ;Pointer to data
move.w a0,-(a7) ;pointer to data
jsr tios::transmit ;add data to transmit buffer
add.l #4,a7 ;fix stack pointer, pushed 2 bytes.
jsr tios::flush_link ;send it!
jsr tios::reset_link
jsr flib::idle_loop ;wait for keypress
rts
linkdata:
dc.b $89,$06,$07,$00,$0C,$00,$00,$00,$00,$01,$61,$6E,$00
et les routines de tetris, c'est ça:
;======================
SendByte:
movem.l d0-d1/a0-a1,-(a7)
move.b d0,linkbuf
move.w #1,-(a7)
pea linkbuf(PC)
jsr tios::transmit
addq #6,a7
movem.l (a7)+,d0-d1/a0-a1
rts
ReceiveByte:
movem.l d1/a0-a1,-(a7)
clr.b linkbuf
move.w #1,-(a7)
pea linkbuf(PC)
jsr tios::receive
addq #6,a7
clr.l d0
move.b linkbuf(PC),d0
movem.l (a7)+,d1/a0-a1
rts
;======================
autre version:
; Function SendByte
; In d0 Byte to send
puffer dc.l 0
SendByte:
movem.l d0-d7/a0-a6,-(a7)
move.b d0,puffer
move.w #1,-(a7)
pea puffer(PC)
jsr tios::transmit
lea 6(a7),a7
movem.l (a7)+,d0-d7/a0-a6
rts
; ReceiveByte
; receives a byte from the I/O puffer
; Out d1 received byte
; d0 byte received (d0 = 0, no, d0 != 0, yes)?
ReceiveByte:
movem.l d2-d7/a1-a6,-(a7)
move.w #1,-(a7)
pea puffer(PC)
jsr tios::receive
lea 4(a7),a6
move.b puffer,d1
movem.l (a7)+,d2-d7/a1-a6
rts
j'ai aussi trouvé un pe de doc sur les deux rom calls transmit et receive:
;----------------------------------------------------------------------------
; transmit(char *buffer, int num)
;
; Function: inserts {num} bytes from {buffer} into link transmit buffer
;
; Return: No error: D0.L = $00000000
; A0 = data + num
; Error: D0.B = $FF
; A0 = data
;
; {num} must be in the range [$01...$80]
;
; Note: An error occurs if {num} is out of range or if there is not enough
; room in the transmit buffer to insert {num} bytes.
;----------------------------------------------------------------------------
tios::transmit equ tios@0009
;----------------------------------------------------------------------------
; receive(char *buffer, int num)
;
; Function: reads at most {num} bytes into {buffer} from link receive buffer
;
; Return: D0.L = number of bytes read
; A0 = buffer + (number of bytes read)
;----------------------------------------------------------------------------
tios::receive equ tios@000A
et allez, un dernier:
(cuila est censé piloter une carte à la sortie de l'io pour allumer une led...)
include "tios.h"
xdef _main
xdef _comment
xdef _ti89
_main
move.w #1,-(a7) ;We want to send 1 byte.
lea linkdata(PC),a0
move.w a0,-(a7) ;'pointer' to data
jsr tios::transmit
add.l #4,a7 ;fix stack pointer, pushed 2 bytes.
jsr tios::flush_link
rts
_comment:
dc.b "Both LED's ON",0
linkdata:
dc.b 192
end
boon, je vous laisse méditer là dessus, je regarderai ça plus en détail ce WE, là g du boulot
++