Merci de votre réponse, j'avais déjà essayé avec "TASM301 assembleur", par exemple avec le fichier "fdown.z80":
Show/Hide spoilerAfficher/Masquer le spoiler
;-------------= Fall Down =-------------
; Author: Ian Graf (port)
; (ian_graf@geocities.com)
; Florent Dhordain (original)
; (flo.dh@usa.net)
; Ahmed El-Helw (original)
; (ahmedre@bellsouth.net)
; Version: 1.5
; Platform: ION
; Date: 11/3/99
;---------------------------------------
#define ballx saferam1 ; 1 byte - ball x coord
#define bally ballx+1 ; 1 byte - ball y coord
#define blockcnt bally+1 ; 1 byte - num blocks
#define score blockcnt+1 ; 2 bytes - score
#define tmpx score+2 ; 1 byte - temp x coord
;---------------= header =--------------
.nolist
#include "ion.inc"
.list
#ifdef TI83P
.org progstart-2
.db $BB,$6D
#else
.org progstart
#endif
ret
jr nc,start_of_program
.db "FallDown",0
start_of_program:
bcall(_clrlcdf) ;
ld de,4*256+0 ;
ld (currow),de ;
ld hl,titlestr ;
bcall(_puts) ;
ld bc,0*256+55 ; draw line
ld de,94*256+55 ;
bcall(_darkline) ;
ld de,10*256+1 ; write "By AE, FD, and IG"
ld (pencol),de ;
ld hl,authorstr ;
bcall(_vputs) ;
ld de,22*256+4 ; write "2nd - Start"
ld (pencol),de ;
bcall(_vputs) ;
ld de,29*256+4 ; write "ALPHA - Speed:"
ld (pencol),de ;
bcall(_vputs) ;
ld de,36*256+4 ; write "CLEAR - Exit:"
ld (pencol),de ;
bcall(_vputs) ;
ld de,55*256+1 ; write "High: "
ld (pencol),de ;
bcall(_vputs) ;
ld hl,(high) ;
bcall(_setxxxxop2) ; write high score
bcall(_op2toop1) ;
ld a,5 ;
bcall(_dispop1a) ;
updatm: ld de,29*256+53 ; write speed
ld (pencol),de ;
ld a,(speed) ;
bcall(_setxxop1) ;
bcall(_dispop1a) ;
menul: bcall(_getk) ;
cp 15 ; [CLEAR]
ret z ; quit
cp 48 ; [ALPHA]
jr nz,nchngs ;
ld hl,speed ; change num players
ld a,(hl) ;
xor %00000011 ;
ld (hl),a ;
jr updatm ;
nchngs: cp 54 ; [2nd]
jr nz,menul ;
bcall(_cleargbuf) ;
ld hl,0 ; reset score
ld (score),hl ;
ld hl,ballx ;
ld (hl),44 ; ballx = 44
inc hl ;
ld (hl),0 ; bally = 0
init: call randomblocks ;
ld hl,(score) ;
add hl,hl ; hl = score*2
ld a,24 ;
sub h ;
ld b,a ;
sloop: ld a,b ;
ld (blockcnt),a ;
call scroll ;
call checkcoll ; check collisions
call putball ; draw ball
call ionFastCopy ;
call putball ; clear ball
ei ;
ld a,(speed) ;
ld b,a ;
delay: halt ;
djnz delay ;
ld a,$FF ;
out (1),a ;
ld a,$FE ;
out (1),a ;
in a,(1) ;
bit 1,a ; [(left)]
jr z,moveleft ;
bit 2,a ; [(right)]
jr z,moveright ;
donemv: bcall(_getk) ;
cp 15 ; [CLEAR]
jp z,exit ;
cp 55 ; [MODE]
jr nz,npause ;
ld a,1 ; turn off calc
out (3),a ;
ei ;
halt ;
npause: ld a,(blockcnt) ;
ld b,a ;
djnz sloop ;
jr init ;
moveleft:
ld a,(ballx) ;
sub 2 ;
jr c,donemv ; offscreen
ld (tmpx),a ;
jr xcheck ;
moveright:
ld a,(ballx) ;
add a,2 ;
cp 96-4 ;
jr nc,donemv ; offscreen
ld (tmpx),a ;
add a,5 ; check right side
xcheck: ld hl,bally ;
ld e,(hl) ;
call ionGetPixel ;
ld a,(hl) ;
or a ;
jr nz,donemv ; something in way
ld de,5*12 ;
add hl,de ; something in way
ld a,(hl) ;
or a ;
jr nz,donemv ;
ld a,(tmpx) ;
ld (ballx),a ; move ball
jr donemv ;
randomblocks:
ld b,12 ; 12 blocks
ld hl,grbuf+(60*12) ;
rloop1: push bc ;
push hl ;
ld b,4 ;
call ionRandom ; one luck on 5 to have a hole
pop hl ;
or a ;
jr z,rloop3 ; skip space
ld ix,block ;
ld de,12 ;
ld b,4 ; 4 lines
push hl ;
rloop2: ld a,(ix) ;
ld (hl),a ;
inc ix ;
add hl,de ;
djnz rloop2 ;
pop hl ;
rloop3: inc hl ;
pop bc ;
djnz rloop1 ;
ld hl,grbuf+(60*12) ;
ld b,12 ;
xor a ;
rloop4: ld c,(hl) ;
rrc c ;
adc a,0 ;
djnz rloop4 ;
cp 12 ; less than 12 bricks
ret c ;
ld b,12 ;
call ionRandom ; put random space
ld hl,grbuf+(60*12) ;
ld d,0 ;
ld e,a ;
add hl,de ;
ld b,4 ;
ld de,12 ;
rloop5: ld (hl),0 ;
add hl,de ;
djnz rloop5 ;
ret ;
scroll: ld hl,grbuf+12 ;
ld de,grbuf ;
ld bc,756 ;
ldir ;
ld h,d ;
ld l,e ;
inc e ;
ld (hl),b ;
ld c,11 ;
ldir ;
ret ;
checkcoll:
ld a,(bally) ;
add a,6 ;
ld e,a ;
ld a,(ballx) ;
call ionGetPixel ; check left
ld a,(hl) ;
or a ;
jr nz,ndown ;
ld a,(bally) ;
add a,6 ;
ld e,a ;
ld a,(ballx) ;
add a,5 ;
call ionGetPixel ; check right
ld a,(hl) ;
or a ;
jr nz,ndown ;
ld hl,(score) ; inc score
inc hl ;
ld (score),hl ;
ld hl,bally ; move the ball down
inc (hl) ;
ld a,(hl) ;
cp 60-5 ;
ret c ;
dec (hl) ;
ret ;
ndown: ld a,(bally) ;
add a,5 ;
ld e,a ;
ld a,(ballx) ;
call ionGetPixel ; check left
ld a,(hl) ;
or a ;
jr nz,moveup ; move up
ld a,(bally) ;
add a,5 ;
ld e,a ;
ld a,(ballx) ;
add a,5 ;
call ionGetPixel ; check right
ld a,(hl) ;
or a ;
ret z ;
moveup: ld hl,bally ;
dec (hl) ;
ld a,(hl) ;
and %10000000 ; y ret z ;
pop hl ;
exit: bcall(_clrscr) ;
bcall(_homeup) ;
ld hl,scorestr ;
bcall(_puts) ; write "Score: "
ld hl,(score) ;
bcall(_disphl) ;
ld hl,(score) ;
ld de,(high) ;
bcall(_cphlde) ;
jr c,exitl ;
ld (high),hl ;
bcall(_newline) ;
ld hl,highstr ;
bcall(_puts) ; write "New High!"
exitl: bcall(_getk) ;
cp 54 ;
jp z,start_of_program ;
jr exitl ;
putball:
ld b,6 ;
ld hl,ballx ;
ld a,(hl) ;
inc hl ;
ld l,(hl) ;
ld ix,ball ;
jp ionPutSprite ;
titlestr: .db "Falldown",0
authorstr: .db "By AE, FD, and IG",0
startstr: .db "2nd - Start",0
playerstr: .db "ALPHA - Speed:",0
exitstr: .db "CLEAR - Exit",0
hscorestr: .db "High: ",0
scorestr: .db "Score:",0
highstr: .db "New High!",0
high: .dw 0
speed: .db 1
block: .db %11111111
.db %10000001
.db %10111111
.db %11111111
ball: .db %01111000
.db %10110100
.db %11001100
.db %11001100
.db %10110100
.db %01111000
.end
Je crée un fichier au format ".8xp" ou ".83p", mais quand je l'ouvre avec Ti Graph Link par exemple, j'obtient ce code:
Or ne possèdant pas de câble je ne peux pas taper ces caractères, j'aimerais obtenir un code du genre:
Je pourrais taper celui-ci à la main et le lancer en écrivant "Envoi(9prgmFDOWN".