1

Bonjour/bonsoir,
Je voudrais savoir si quelcun ne connaitrait pas par bonheur le moyen de vérouiller ou de dévérouiller la touche [ON] sur une TI82stats.fr(=TI82stats=TI83(non +)) ? le but étant de lancer le code qui bloque [on] depuis un programme en basic et de débloquer à la fin, soit pour éviter de quiter par inatention, soit pour forcer une fin "propre" (remise en place du graphe), ...
Dans mon cas c'est pour essayer de faire un programme qui demande un mot de passe au démarage à partir d'un programme à domminante basic (tout sauf bloquer/dévloquer [On])

Merci d'avance

Sandro

PS à Contra : pour la question quand je me met à l'ASM, je pense le 2 ou 3 juillet (j'ai l'oral de français le 1er)

2

Il y a des logiciels sur ticalc.org qui font justement cela, comme ceci:
http://www.ticalc.org/archives/files/fileinfo/330/33039.html

Je ne sais pas ce qui est un TI82stats.fr, peut-on utiliser des logiciels asm sans besoin d'un shell ? Si c'est vraiment comme un TI83, je ne crois pas que tu auras trop de problèmes avec ce code-là.

3

Merici, beaucoup pour ce lien,
l'ASM sans shell fonctionne parfaitement pour les TI82stats.fr même di la sintaxe de lancement n'est pas du tout intuitive ('Envoi(9prgmONBLOCK' (parrenthèses à ne pas refermer). Par contre le problème est que je n'arrive pas à optenir le code héxadécimal, "TI-Editor" et "TiProgramEditor" le refusant car c'est de l'ASM, et TI Graph Link 83 ne peut donc évidament pas l'ouvrir. Quelcun serrait-il donc SVP pret de m'extraire le code pour essayer avec ça ou de recompiler pour TI82stats.fr (il y a un fichier ***.asm joint)

Merci d'avance
Sandro

4

Je n'arrive pas à le faire fonctionner sur le 83, l'interruption se charge bien mais il paraît ne rien faire. Je pense pas que les ports soient différents entre le 83/+. Donne-moi quelques minutes et je te dis si je le régler.

Ahh, j'ai oublié comment on compile des logiciels pour le 83. Peut-être Contra peut aider.

5

Pour compiler pour les 83 : topics/139154-z80-a-ti82statsfr-avec-cable#21 par contre pour que ce soit sans shell il faudra modifier l'header...

6

Ouai je vais t'aider mais lundi grin

Sinon j'ai bien note ... 2/3 juillet wink

7

Merci beaucoup, j'ai hate de me mettre à l'ASM, mais jusqu'à ce que l'oral de français soit passé, j'ai vraiment pas le temps.

Sandro

8

Merci a vous deux, mais j'ai toujours des problèmes. J'ai essayé avec dosbox (car tasm/devpac ne marchent pas sur windows 7) mais ils ne me donnent pas le code hex (et n'ajoutent pas le End:0000:End), mais comprimé, et il paraît que le 83 n'aime pas cela (au moins sans un shell). Quand je programmais pour le 83 (il y a beaucoup trop de temps wink), je suis sûr que j'avais fait des programmes nostub parce que AsmGuru n'utilisait pas de shell... mais comment ? :P

9

Comment on compile, je crois avoir compris qu'il suffit de changer l'header et le comilateur. Pour lancer le programme, il faut faire
":Envoi(9prgmXXX" ou "sorryend(9prgmXXX" si la TI est en anglais sans fermer la parenthèse et avec prgmXXX un programme de la forme:

:code héxa
:suite code héxa (parfois)
:suite code héxa (parfois)
:End
:0000 //ceci peut parfois changer
:End

Merci d'avance
Sandro

PS : si c'est un ***.83p poste le toujours, peut-être que l'on peu le décomprésser en dévérouillant l'édition depuis la TI ?

10

edit : Non enfaite il faut bien le code hexa pour utiliser send(9 : http://www.unitedti.org/forum/index.php?s=3072f33ebe215d4164230f43d3b44beb&showtopic=9371&view=findpost&p=141602 Maintenant faut voir si spasm a une option pour ou s'il faut le faire à la main...

Bref à mon avis c'est bien plus simple de passer à Ion, qui a en plus l'avantage d'être compatible 83/83+ smile

Sinon spasm ne marche pas sous 7 ? Parce qu'il compile très bien pour les 83.

11

Moi, ce qu'il me faudrait c'est bien un code en héxadécimal comme résultat car je voudrais que le programme puisse être utilisé sans le cable (donc pas d'ASM avec shell), avec le cable, il y en à en ASM avec shell tout en assembleur qui font déjà le travail, mais je voudrais un programme recopiable à la main (en se relisant bien).

Merci d'avance
Sandro

PS : mais si tu optient un programme qui marche sans shell sur TI82stats, envoi le quand même, ça poura toujour servir une autre fois.

12

Voilà j'ai réussis à compiler pour que ce soit utilisable avec send(9 : tromb Fichier joint : test.zip (compiler.bat pour compiler test.z80...)

Le tout c'était d'"unsquish" le binaire !

13

Ah ouais, merci ! Spsam marche bien, (c'est pour spasm/wabbitcode que j'utilise windows pour programmer smile) mais je ne savais pas le faire produire de code hexa. Je crois que cette formule-là fera mon affaire grin Et la raison pour ne pas utiliser Ion c'est ce qu'a dit sandro, qu'il faut qu'un programme BASIC puisse s'en servir (et d'ailleurs le programme déjà existe pour le 83+).

14

Mercis beaucoup, mais tu n'aurrais pas oublier une ligne par hasard ou envoyé le mauvais fichier: j'optient
:C9
:End
:0000
:End


et le .z80:

.nolist
#define TI83
#include "ion.inc"

.list
.org $9327

Start:
ret

.end


le programme fonctionne sauf qu'il n'agit pas !!!

Merci d'avance
Sandro

15

Je ne sais pas pourquoi mon code ne marche pas, l'interruption se charge sans problèmes et même s'exécute à chaque interruption, mais paraît ne rien faire. Peut-être c'est l'emulateur qui en est responsable, mais j'en doute... Je n'ai pas de calc pour l'essayer, si tu veux, voici le code héxa:
CDDC4ECDFC4E1D2803ED56C9F32100841101840100013682EDB0215493118282010B00EDB03E84ED47ED5EFBC9D908DB03E6FED303C33A00(n'oublie pas le "End:0000:End")

_RCLANS		=	4EDCh
_CONVOP1	=	4EFCh

.org $9327

	call _RCLANS
	call _CONVOP1
	dec e
	jr z,instaler_interruption
;sinon, l'enlever
	im 1
	ret
instaler_interruption:
	di
	ld hl,$8400
	ld de,$8401
	ld bc,256
	ld (hl),$82
	ldir

	ld	hl,debut_interruption
	ld	de,$8282
	ld	bc,fin_interruption-debut_interruption
	ldir
	ld	a,$84
	ld	i,a
	im	2
	ei
	ret

debut_interruption:
	exx
	ex af,af'
	in a,($03)		;port 3: port des interruptions
	and %11111110	;bit 0 = 1 si "On" est pousse
	out ($03),a		;changer bit 0 à 0
	jp $003A		;aller à l'interruption de la calc
fin_interruption:
.end

16

sandro > C'est normal c'était juste un essai de compilation, si tu lis bien le code source il quitte direct (ret=C9).

chickendude > Pas sûr que les romcalls soient existant chez les 83, ou le port n'est peut être pas le même. Il faudrait jeter un coup d’œil du côté du wikiti.

Quoique je viens de tester le programme d'origine (83+) ne marche pas non plus avec VTI ou WabbitEmu... Quelqu'un peut tester oncalc ?

17

Merci beaucoup, le code héxa marche nikel, il faut juste penser à mettre "1:" devant pour bloquer et "0:" pour débloquer.
Dès que je l'aurrais finit, je vous posterrais ici le programme de mot de passe au démarage utilisable sans cable (enfin, il faut bien recopier le code héxa).

EDIT : j'ai un petit problème, quand ma TI s'etteint, elle ne ce realume plus sans reset si [on] était bloqué quand elle c'est étteinte de toute seule. Donc Ram Clear ... sur l'émulateur.
Par conséquent, il me faut modifier mon programme, mais pour ça il faudrait un autre code héxa : un pour étteindre la TI sans quitter le programme en basic depuis lequel c'est lancé (en gros la TI s'étteint durrant l'execution du code héxa, et quand la TI se ralume, le programme en héxa continue (donc se termine) et le programme en basic reprend juste après la commende "Envoi(9prgmONLOCK")

Merci d'avance
Sandro

18

Oui il faut prévenir l'APD, l'auteur de Belzeblub l'a fait (cf source), sinon c'est sûr que vu que ON est désactivé ça risque plus d'allumer la calc.

chickendude > Si ton programme gère ça n'hésite pas ensuite à le publier pour les 83 et 83+ ! smile

19

Je crois qu'il y a un malcompris, le programme pour bloquer [on] fonctionne très bien (peut-être même trop vue qu'il empêche la TI de se ralumer si elle s'éteint avec [on] bloqué).

Par contre, du fait que la TI ne peut-être ralumée si le programme est en cours, il me faudrait au programme en ASM pour éteindre la TI car mon idée d'atendre avec Pause ne marhe plus.

Mon idée en schématique :

:While 1
:Envoi(9prgmOFF
:1:Envoi(9prgmONLOCK
:mot de passe à l'aide de codetouche (getkey) affin d'évitter que l'on quitte avec [2nde][mode]
:0:Envoi(pprgmOFF
:If "mot de passe correct"
: Stop
:End

le but du programme est qu'à l'allumage, si ce prog à été lancé juste avant d'éteindre la TI, il faille un mot de passe pour pouvoir utiliser la TI, si le mot de passe est faux, la TI se reéteint.

Le programme Belzeblub ne correspond malheureusement pas, le but étant d'éteindre pour ne pas vider les piles, donc un poisson qui qe ballade, ça n'avance rien.

Merci d'avance
Sandro

20

Mais non, je parle de la façons dont ce programme prévient l'APD (automatic power down). En effet il suffit juste de permettre à nouveau l'accès à la touche ON lorsque la calc va s'éteindre, c'est pas plus compliqué que ça.

Bien sûr qu'un poisson qui se balade à l'écran ne va servir à rien ! grin

21

Le seul problème c'est que je ne sais pas encore programmer en ASM (comme indiqué plus haut, je m'y met juste après l'oral de français). Est-ce que tu (ou quelcun d'autre) pourrait m'aider s'il vous plaît ?

Merci d'avance
Sandro

22

Ok je regarde ça.

23

Merci beaucoup

Sandro

EDIT :
@chickendude : est-ce que m'autorise à redistribuer ton code à l'intérieur de mon programme en libre de droits? (je demande, on ne sait jamais avec les licences.
@deeph : même question (enfin, si tu parviens à créer un code qui est utilisable pour m'on programme.

PS : je préciserais que les codes héxa sont de vous quand je publierais ce programme (esnfin s'il marche). Je pense que je le mettrais sur Tout82, Site du zéro, et ici bien entendu.

24

Bof c'est à personne, là on a le parfait exemple de code provenant d'un peu partout (copyleft !), pas la peine de se prendre la tête avec ça smile

CDDC4ECDFC4E1D2803ED56C9F32100841101840100013682EDB0215493118282011400EDB03E84ED47ED5EFBC9D9083A0A803DCC6893DB03E6FED30308D9C338003EFF320A80C9
End
0000
End

.nolist
#define	TI83
#define	_RCLANS		$4EDC
#define	_CONVOP1	$4EFC

#include	"ion.inc"

.list
	.org $9327

debut:
	call _RCLANS
	call _CONVOP1
	dec e
	jr z,installer_interruption
	im 1
	ret

installer_interruption:
	di
	ld hl,$8400
	ld de,$8401
	ld bc,256
	ld (hl),$82
	ldir

	ld hl,debut_interruption
	ld de,$8282
	ld bc,fin_interruption-debut_interruption
	ldir
	ld a,$84
	ld i,a
	im 2
	ei
	ret

debut_interruption:
	exx
	ex af,af'

	ld a,($800A)
	dec a
	call z,stop_apd

	in a,($03)
	and %11111110
	out ($03),a

	ex af,af'
	exx
	jp $0038

fin_interruption:

stop_apd:
	ld a,255
	ld ($800A),a
	ret

.end

Voilà, tu peux essayer ça ? Apparemment l'APD éteint la calc lorsque son compteur ($800A) arrive en dessous de 17 (allez savoir pourquoi...).

Je ne sais pas si le remettre au max permet d'éviter ça donc dit moi si ça marche.

25

Désolé, la TI ne s'éteint pas. mourn Merci quand même.

Merci d'avance
Sandro

EDIT : à moins qu'il ne faille une certaine valeur pour ans?

26

Justement c'est le principe, la TI n'a pas à s'éteindre pendant la demande du mot de passe, seulement après si c'est bon, non ?

Ou alors tu veux qu'elle puisse s'éteindre puis se rallumer ?

27

C'est ça, je veux qu'on puisse l'étteindre (de tout seul dès que l'on lance le programme ou que l'on entre un mot depasse faux (pour économiser les bateries (24H/24 7J/7, ça use les piles))) et qu'elle se ralume avec [on] (à ce moment [On] n'est pas bloqué).

Merci d'avance
Sandro

EDIT : voici le code actuel (je conte le modifier encore un petit peu pour que si l'on arrête en plein milieu du code, la TI s'éteigne quand même) :

1: Send(9prgmONLOCK
Send(9prgmOFF
{92,93,92,93,93,102,92,93 -> Liste1
8 -> dim(L‚
While 1
ClrHome
For(A,1,8
Repeat K
getKey -> K
End
Output(1,A,"*
K -> Liste2(A
End
0: Send(9prgmONLOCK
If prod(Liste1=Liste2
Stop
End


Sandro

PS : comme j'ai l'écrit de français demain matin, il faut que je te laisse (je répondrait demain aprem.

28

Voilà :

CDDC4ECDFC4E1D2803ED56C9F32100841101840100013682EDB0215493118282011600EDB03E84ED47ED5EFBC9F3D9083A0A803DCA6A93DB03E6FED30308D9FBC33800D908ED56FBED4D
End
0000
End

.nolist
#define	TI83
#define	_RCLANS		$4EDC
#define	_CONVOP1	$4EFC

#include	"ion.inc"

.list
	.org $9327

debut:
	call _RCLANS
	call _CONVOP1
	dec e
	jr z,installer_interruption
	im 1
	ret

installer_interruption:
	di
	ld hl,$8400
	ld de,$8401
	ld bc,256
	ld (hl),$82
	ldir

	ld hl,debut_interruption
	ld de,$8282
	ld bc,fin_interruption-debut_interruption
	ldir
	ld a,$84
	ld i,a
	im 2
	ei
	ret

debut_interruption:
	di
	exx
	ex af,af'

	ld a,($800A)
	dec a
	jp z,stop_interruption

	in a,($03)
	and %11111110
	out ($03),a

	ex af,af'
	exx
	ei
	jp $0038

fin_interruption:

stop_interruption:
	exx
	ex af,af'
	im 1
	ei
	reti

.end

Théoriquement ça vérifie si la calc va s'éteindre automatiquement et si c'est le cas ça désinstalle l'interruption (ce qui permet l'accès à la touche ON).

Par contre je pense qu'à l'allumage ça va quitter ton programme TI-Basic, à voir si ton hook le relance bien...

À tester donc !

edit : chickendude > Un truc important mais qui m'avais échappé aussi c'est qu'il est important de désactiver les interruption pendant l’exécution de la notre.

29

deeph (./16) :
chickendude > Pas sûr que les romcalls soient existant chez les 83, ou le port n'est peut être pas le même. Il faudrait jeter un coup d’œil du côté du wikiti.

Quoique je viens de tester le programme d'origine (83+) ne marche pas non plus avec VTI ou WabbitEmu... Quelqu'un peut tester oncalc ?

J'y avais déjà jeté un coup d'oeil et il me semble qu'ils sont (plus ou moins) les mêmes. Et pour le 83+ il faudrait charger l'interruption à un autre endroit. Je sais que ce n'est pas les romcalls (j'ai essayé aussi avec _RclX) parce que l'interruption s'installe correctement et même s'exécute à chaque interruption.
sandro (./17) :
Merci beaucoup, le code héxa marche nikel, il faut juste penser à mettre "1:" devant pour bloquer et "0:" pour débloquer.
Je suis content que le code marche bien ! Et ouais, j'ai oublié de te le dire :P 1 pour bloquer [ON] et n'importe quel autre numéro (comme, par exemple, 0) pour le débloquer.

EDIT: Bien sür, le programme est tien, fais ce que tu voudras avec lui, d'ailleurs je n'aime pas qu'on mette mon nom partout, surtout quand je n'ai rien fait smile

Tu peux aussi lire le code de BatteryCheck, je crois qu'á l'APD il éteint la calc et reprend en l'allumant, mais comme je n'ai pas les moyens de l'essayer...

30

Donc ça viens bien des émulateurs (j'aurai juré que wabbitemu émulait parfaitement la 83+ pourtant).