petit programme

petit programme
un login qui empeche le prof de toucher a ma calc (touche on bloquee et attente de l'appui sur une combinaison de touche)

# Posté le jeudi 29 juin 2006 10:24

Tutorial TASM on calc

tutorial que j'ai ecrit a mes heures perdues ^^




-----Tutorial pour TASM on calc-----
auteur:Marcel Blaumann
telechargeable:http://www.ticalc.org/archives/files/fileinfo/384/38467.html

Ce compilateur pour Assembleur est zippe avec 2 groupes:ASM et Z80TAB.
ASM contient les programmes:
-ASM,un bon exemple mais en majuscules
-TASM,le compilateur (basic etendu)
-Z80TAB,qui contient toutes les commandes de TAS on calc.
a supprimmer:les commandes sont en majuscules.
-ZTASM,programme annexe a TASM (basic)
-ZZTASM,programme annexe a TASM (assembleur)

Le groupe Z80TAB contient les programmes:
-ASM,exemple mauvais mais bien ecrit (donc a jeter)
-Z80TAB,qui contient toutes les commandes mais cette fois
en minuscules,donc a garder.


1)La Syntaxe des en-tete
----------------------

Les en-tete s'ecrivent de la maniere suivante:
-Au lieu de include on met"Get(nomfich)",autant de fois
qu'on veut.
[!]:J'ai remarque qu'apres un certain nombre de commandes
(j'ai bien dit commandes,les variables vous pouvez en avoir 2500
si vous voulez),TASM ne reconnaitra pas les derniere,
donc je vous conseille de copier les commandes dont vous
avez besoin dans un programme en plus de celles contenues
dans Z80TAB dans un autre fichier.

-On ecrit "prgmNMDUPROG" juste apres les Get(, c'est le nom que
prendra le programme en ASM


2)Les crochets:
-------------

Ici on mettra des crochets un peu partout:
-Les labels,quand ils sont appeles,devront etre entres crochets
-les chiffres apres "ld" seront eux aussi entre crochets.
-les commandes elles aussi


3)call et bcall
-------------

Pour les commandes,on utilisera "bcall [commandes]",comme avec
memchk ou encore getkey.
Pour les commandes graphiques telles que IPoint ou ILine,
on gardera l'habituel "call [IPoint]".


4)Autres:
-------

Pour la fin des programmes,on ecrit simplement "END" tel qu'on
le trouve dans l'editeur de programme au lieu de ".end END".


5)Les en-tetes:
-------------

Puisque j'ai fait du C++,je les appellerai "Headers".
Dans Z80TAB,peu de commandes etant disponibles,j'ai decide
de mettre le fichier Ti83+.inc sur ma calculatrice,
mais apres l'avoir rendu lisible par TASM on calc,
je me suis apercu qu'il etait bien trop lourd (plus de
13Ko).Donc j'ai selectionne des groupes de commandes dans
des headers disponibles a la fin de ce tutorial.
Evidemment si vous voulez utilisez d'autres commandes,
rien ne vous en empeche,voici la marche a suivre:
1-copiez-collez le contenu du fichier Ti83+.inc fourni
avec TASM (pas le on calc) dans un programme via un editeur
tel que celui de Ti-graphlink.
3-choisissez les commandes que vous voulez et supprimmez
les autres (question de poids)
4-envoyez le a votre calculatrice.
5-adaptez ces commandes a TASM on calc.
Pour ce faire,supprimmez les points d'interrogation (ce
sont les caracteres que la calculatrice ne comprend pas),
puis supprimmer EQU et les blancs, et enfin le h a la fin.
Il devrait vous rester le nom de la fonction (que vous
pouvez changer si vous le desirez) et son code/adresse
compose de 4 chiffres et/ou lettres.
exemple:(fonction inventee)
On a:"?Abs?X?YEQU 14E9h"
Ce qui donne:"AbsXY14E9


6)Exemple de programme
--------------------

Get(Z80TAB)
Get(HTOUCHES)
Get(HGRAPHIC)
prgmPIXEL
bcall [clrlcdfull]
ld b,[1]
ld c,[1]
ld d,[1]
call [IPoint]
Touches:
bcall [getkey]
cp [Left]
jp z,[Gauche]
cp [Right]
jp z,[Droite]
cp [Up]
jp z,[Haut]
cp [Down]
jp z,[Bas]
cp [Clear]
jp z,[Quitter]
jp [Touches]
Gauche:
ld d,[0]
call [IPoint]
dec b
jp [Affichage]
Droite:
ld d,[0]
call [IPoint]
inc b
jp [Affichage]
Haut:
ld d,[0]
call [IPoint]
dec c
jp [Affichage]
Bas:
ld d,[0]
call [IPoint]
inc c
jp [Affichage]
Affichage:
ld d,[1]
call [IPoint]
jp [Touches]
Quitter:
ret
End

Ce programme dessine un pixel que vous dirigez.


A)annexe:Headers
--------------

1)HDIVERS
-------
Il contient un peu de tout.
AnsName4B52
BitVertSplit4FA8
BufClr5074
BufCpy5071
CheckSplitFlag49F0
ChkBattLow50B3
CircCmd47D4
CkInt4234
CleanAll4A50
ClearRect4D5C
ClearRow4CED
CLine4798
CLineS479B
CloseProg4A35
ClrLCD4543
ClrLCDFull4540
ClrScrn4549
ClrScrnFull4546
ClrTxtShd454C
CPoint4DC8
CPointS47F5
CreateAppVar4E6A
CreateCList431B
CreatePict4333
CreateProg4339
CreateProtProg4E6D
CreateStrng4327
DarkPnt47F2
Disp 4F45
Disp Done45B5
Disp MenuTitle
DrawRectBorder4D7D
DrawRectBorderClear
EditProg4A32
EnoughMem42FD
FillRect4D62
FlashToRam5017
GetTokStrng4594
GetSysInfo50DD
GrBufClr4BD0
GrBufCpy486A
GrphCirc47D7
ILine47E0
IPoint47E3
LCDBUSY4051
LCDDRIVERON4978
PixelTest48B5
RandInit4B7F
Random4B79
RclAns4AD7
ReleaseBuffer4771
SStringLength 4CB4
StoAns4ABF

2)HERREURS
--------
Toutes les erreurs declenchables :)
ErrArgument44AD
ErrBadGuess44CB
ErrBreak44BF
ErrDataType44AA
ErrDimension44B3
ErrDimMismatch44B0
ErrDivBy04498
ErrDomain449E
ErrIncrement44A1
ErrInvalid44BC
ErrIterations44C8
ErrLinkXmit44D4
ErrMemory44B9
ErrNonReal44A4
ErrNotEnoughMem448C
ErrSignChange44C5
ErrSingularMat449B
ErrStat44C2
ErrStatPlot44D1
ErrSyntax44A7
ErrTolTooSmall44CE
ErrUndefined44B6

3)HGRAPHIC
--------
Tout pour dessiner a l'ecran.
BitVertSplit4FA8
BufClr5074
BufCpy5071
CheckSplitFlag49F0
CircCmd47D4
CleanAll4A50
ClearRect4D5C
CLine4798
CLineS479B
CloseEditBuf48D3
CloseEditBufNoR476E
ClrLCD4543
ClrLCDFull4540
ClrScrn4549
ClrScrnFull4546
ClrTxtShd454C
CreatePict4333
DarkLine47DD
DarkPnt47F2
DrawCirc24C66
DrawCmd48C1
DrawRectBorder4D7D
DrawRectBorderClear4D8C
EraseRectBorder4D86
FillRect4D62
FillRectPattern4D89
ForceFullScreen508F
GrBufClr4BD0
GrBufCpy486A
GrphCirc47D7
HorizCmd48A6
IBounds4C60
IBoundsFull4D98
ILine47E0
InvertRect4D5F
IPoint47E3
LineCmd48AC
PDspGrph48A3
PixelTest48B5
PointCmd48B2
PointOn4C39
PutMap4501
Puts450A
ReleaseBuffer4771
VPutMap455E
VPutS4561
VPutSN4564
ZmDecml484F
ZmFit485B
ZmInt484C
ZmPrev4852
ZmSquare485E
ZmStats47A4
ZmTrig4861
ZmUsr4855
ZooDefault4867

4)HMEMOIRE
--------
Tout pour foutre la merde sur la calc de vos potes ^^.
Create0Equ432A
CreateAppVar4E6A
CreateCList431B
CreateCplx430C
CreateEqu4330
CreatePair4B0D
CreatePict4333
CreateProg4339
CreateProtProg4E6D
CreateReal430F
CreateRList4315
CreateRMat4321
CreateStrng4327
DelListEl4A2F
DelMem4357
DelRes4A20
DelVar4351
DelVarArc4FC6
DelVarNoArc4FC9
EditProg4A32
EnoughMem42FD
InsertMem42F7
LoadSFont4783
LoadCIndPaged501D
LoadDEIndPaged501A
LoadPattern4CB1
MemChk42E5
MemClear4C30
MemSet4C33
PagedGet5023
SaveDisp 4C7B

5)HOPERATI
--------
Tout pour faire des operations.
BinOPExec4663
CAbs4E97
CAdd4E88
CDiv4E94
CDivByReal4EBB
CEtoX4EA9
CFrac4EC1
CkOP1C04225
CkOP1Cplx40FC
CkOP1FP04228
CkOP1Pos4258
CkOP1Real40FF
CkOP2FP0422B
CkOP2Pos4255
CkOP2Real42DF
CkPosInt4231
CkValidNum4270
ClrOP1S425E
ClrOP2S425B
CMult4E8E
ConvOP14AEF
COP1Set04105
CpOP1OP24111
CpOP4OP34108
CpyO1ToFPS1445C
CpyO1ToFPS2446B
CpyO1ToFPS34477
CpyO1ToFPS44489
CpyO1ToFPS54483
CpyO1ToFPS6447D
CpyO1ToFPS74480
CpyO1ToFPST444A
CpyO2ToFPS14459
CpyO2ToFPS24462
CpyO2ToFPS34474
CpyO2ToFPS44486
CpyO2ToFPST4444
CpyO3ToFPS14453
CpyO3ToFPS24465
CpyO3ToFPST4441
CpyO5ToFPS14456
CpyO5ToFPS34471
CpyO6ToFPS24468
CpyO6ToFPST4447
CpyStack4429
CpyTo1FPS14432
CpyTo1FPS1043F3
CpyTo1FPS1143D8
CpyTo1FPS2443B
CpyTo1FPS34408
CpyTo1FPS4440E
CpyTo1FPS643E4
CpyTo1FPS743EA
CpyTo1FPS843ED
CpyTo1FPS943F6
CpyTo1FPST4423
CpyTo2FPS1442F
CpyTo2FPS24438
CpyTo2FPS34402
CpyTo2FPS443F9
CpyTo2FPS543DB
CpyTo2FPS643E1
CpyTo2FPS743E7
CpyTo2FPS843F0
CpyTo2FPST4420
CpyTo3FPS1442C
CpyTo3FPS24411
CpyTo3FPST441D
CpyTo4FPST441A
CpyTo5FPST4414
CpyTo6FPS243FF
CpyTo6FPS343FC
CpyTo6FPST4417
CpyToFPS1445F
CpyToFPS2446E
CpyToFPS3447A
CpyToFPST444D
CpyToStack4450
CSquare4E8B
Mov9OP1OP2417D
Mov9OP2Cp410B
Mov9ToOP1417A
Mov9ToOP24180
MovFrOP14183
OP1ExOP2421F
OP1ExOP34219
OP1ExOP4421C
OP1ExOP5420D
OP1ExOP64210
OP1ExpToDec4252
OP1Set041BF
OP1Set1419B
OP1Set241A7
OP1Set341A1
OP1Set4419E
OP1ToOP2412F
OP1ToOP34123
OP1ToOP44117
OP1ToOP54153
OP1ToOP64150
OP2ExOP44213
OP2ExOP54216
OP2ExOP64207
OP2Set041BC
OP2Set141AD
OP2Set241AA
OP2Set34198
OP2Set44195
OP2Set5418F
OP2Set604AB0
OP2Set8418C
OP2SetA4192
OP2ToOP14156
OP2ToOP3416E
OP2ToOP4411A
OP2ToOP5414A
OP2ToOP6414D
OP3Set041B9
OP3Set14189
OP3Set241A4
OP3ToOP1413E
OP3ToOP24120
OP3ToOP44114
OP3ToOP54147
OP4Set041B6
OP4Set14186
OP4ToOP14138
OP4ToOP2411D
OP4ToOP34171
OP4ToOP54144
OP4ToOP64177
OP5ExOP6420A
OP5Set041B3
OP5ToOP1413B
OP5ToOP24126
OP5ToOP34174
OP5ToOP4412C
OP5ToOP64129
OP6ToOP14135
OP6ToOP24132
OP6ToOP54141
RandInit4B7F
Random4B79
SetXXOP1478C
SetXXOP2478F
SetXXXXOP24792

6)HTOUCHES
--------
Les codes de toutes les touches (a utiliser avec getkey).
[!]:Il y des espaces,mais c'est normal,parce que ces codes
n'ont que deux caracteres,et TASM en cherchant 4,s'il n'y
avait pas d'espaces,il prendrait les deux premieres
lettres de la touche suivante.
--Fleches--
Down04

Left02

Right01

Up03

--Usuels--
Clear09

Mode45

Enter05

Prgm20

Stat31

Math32

Del0A

--Chiffres--
Un8F

Deux90

Trois91

Quatre92

Cinq93

Six94

Sept95

Huit96

Neuf97

Zero8E

--F1 a F5--
Yequ49

Window48

Zoom2E

Trace5A

Graph44

--Operations--
Add80

Sub81

Mul82

Div83

--Autres--
Lpar85

LnBF

CosB9

LogC1

Chs8C

SquareBD

InvB6

Rpar86

TanBB

Vars35

Virgule8B

Matrix37

Decpnt8D

VarxB4

Expon84

Sto8A



Et voila!
Envoyez-les a votre Ti et enjoy!

# Posté le samedi 17 juin 2006 06:57

Modifié le vendredi 28 juillet 2006 10:30

Assembleur (2)

Ca y est, j'ai reussi a me debrouiller avec TASM on calc, mais vu les problemes que j'ai rencontres, je vais creer un tutorial qui expliquera comment l'utiliser, et qui inclura des fichiers en-tete, parce que celui qui est fourni avec le compilateur n'est pas tres rempli...
Il manque notamment les touches correspondantes a la commande _getkey ou encore la plupart des commandes graphiques telles que _ipoint ou _iline...
Alors je vais creer ces fichiers en-tete que je classerais par theme (vu qu'ils sont assez lourds, si on veut faire un bon programme en ASM, il est impossible d'avoir en meme temps dans la RAM TASM, les fichiers en-tete, le programme non compile (a peu pres 4 fois son poids une fois compile), puis le programme compile.
Avec ce compilateur, il sera egalement impossible de creer des jeux de la taille de zDoom (vu que non compile il doit peser dans les 60000 octets), ou encore des sprites en binaire (ou alors convertir en hexadecimal avec omnicalc)...
Par contre, ce qui est simple a faire et que j'ai deja commence, c'est la creation de ses propres librairies suivant les commandes dont on a besoin.

# Posté le vendredi 16 juin 2006 07:04

Assembleur

Je me suis recemment mis a l'asm avec TASM on calc,un compilateur directement sur la
calculatrice,comme son nom l'indique.Ce langage etant assez proche du Fast-RPL
que j'ai appris en fevrier dernier,avec aussi quelques ressemblances avec le C++
(notamment dans les define des debuts de chaque programme),je n'ai jusqu'ici pas
rencontre de serieux problemes quand a la programmation en elle-meme (vous me direz,
je debute^^).Malheureusement,TASM on calc est assez limite dans le nombre de ses
commandes (on est oblige de les ajouter soi meme,ce n'est pas complique mais il
faut connaitre les codes hexadecimaux correspondants),et de plus,je n'ai rien
compris a la syntaxe du langage.Car ce compilateur utilise une syntaxe differente
que le compilateur DOS de windows (ou de Linux pour nos amis Linuxiens),et je n'ai
pas encore reussi a mettre une seule fonction autre que les labels... Si
j'arrive a me debrouiller avant que j'en soit completement degoute (d'ici une
semaine ^^),ou qu'une aide providentielle me tombe du ciel,il est probable que la
plupart de mes programmes seront dorenavant transcrit en assembleur pour
une question de poids et de rapidite.
[ Ajouter un commentaire ] [ Aucun commentaire ]

# Posté le vendredi 16 juin 2006 06:57

Fight and Magic IV (plan)

P=Piece normale(4 cases en carre)
C=Couloir(4 cases en rectangle)
E=Echoppe(4 cases en carre)
B=Boss
R=Rien
Dans Fight and Magic IV.5,j'ai enleve plusieurs couloirs et pieces
--------------------------------------------------------------
RRRRRPPPPEEPPRRRRRR
RCCCCPPPPEEPPBBBRRR
PPCRCCCCCCCCCBBBPPC
PPCRCPPPPPPPPBBBPPC
PPCRCPPPPPPPPRRRPPC
PPCRCCCCCCCCCCCCPPC
CCCCRRRRRRRRCRRCCCC
PPCCCCCCRRRRCRRRRRR
PPCCPPPPPPPPCEEPPRR
PPCCPPPPPPPPCEEPPRR
PPCCCCCCCCCCCCCCCCR
PPCRRRRRRRRRCPPPPCR
PPCRRRRRRRRRCPPPPCR
PPCPPEERRRRRCCCCCCR
PPCPPEERRRCCCCCCCCC
PPCCCCCRRRRRRRCRRRR
PPCPPPPPPPPPPRCRPPR
PPCPPPPPPPPPPRCRPPR
PPCCCCCCCCCCCCCCCCC
--------------------------------------------------------------
Et voila!
J'ai volontairement omis les murs pour que vous ne
compreniez rien,c'est quand meme un labyrinthe!

# Posté le jeudi 15 juin 2006 08:07