Rien de bien compliqué ici puisque le modes (degré, radians, axesoff....... se manie déjà en basic. En asm on peut même détecter ces modes. A titre de rappel, voyez la quatrième leçon : afficher du texte. Vous avez déjà activer et désactiver un mode en affichant du texte noir sur blanc.
Les commandes :
set (nom du flag), (iy+ iy offset) : active un mode
res (nom du flag), (iy+ iy offset) : désactive un mode
bit (nom du flag), (iy+iy offset) : teste le mode, met à jour le flag (Z ou NZ)
Ne me demandez pas pourquoi cette syntaxe un peu étrange, c'est
un peu compliqué pour l'instant.
Voici la liste des différents modes présents sur la ti :
extrait de la doc de texas instrument
FLAG NAME IY OFFSET DESCRIPTIONUne petite astuce :-------------------------------------------------------------
trigdeg trigflags 0 = radians; 1 = degré
plotloc plotflags 0 =les graphismes sont affichés à l'écran et sauvegardés ds plotscreen, la sauvegarde n'est pas effectués.
plotdisp plotflags 0 = l'écran graphique n'est pas affiché; 1= écran graphique affichés
grffuncm grfmodeflags 1 = mode fonction y=
grfpolarm grfmodeflags 1 = mode fonction polaire
grfparamm grfmodeflags 1 = mode fct paramétrique
grfrecurm grfmodeflags 1 = sequence graph mode
graphdraw graphflags ??0 = graph is "clean"; 1 = graph is "dirty"
graphcursor graphflags 0 = cursor off; 1 =cursor on
grfdot grfdbflags 0 =mode connected; 1 = dot
grfsimul grfdbflags 0 = sequential; 1=simultané
grfgrid grfdbflags 0 =gridoff; 1 = gridon
grfpolar grfdbflags 0 = RectGC; 1=PolatGC
grfnocoord grfdbflags 0 =CoordOn; 1=CoordOff
grfnoaxis grfdbflags 0 = AxesOn; 1 = AxesOff
grflabel grfdbflags 0 = LabelOff; 1=LabelOn
textEraseBelow textflags ??1 = erase line below small font write
textScrolled textflags 1 = le texte écrit est placé sur la dernière ligne
textInverse textflags 1 = texte noir sur blanc
onRunning onFlags ??1 = calculator is running
onInterrupt onFlags ??1 = [on] key interrupt occurred
statsvalid statflags 1 = résulat statistique activé
fmtExponent fmtFlags 1 =écriture scientifique
fmtEng fmtFlags 1 = écriture ingénieur
fmtreal nummode 1 = nbre réel
fmtrect nummode 1 =nbre complexe (a+bi
fmtpolar nummode 1 =nbre complexe (re^Oi)
curAble curFlags 1 =active le flash curseur
curOn curFlags 1 = le curseur est montré
curLock curFlags 1 = curseur bloqué
appTextSave appFlags 1 = sauve les caractères écrits ds la zone de mémoire textshadow
appAutoScroll appFlags 1 = le texte est mis sur la dernière ligne de l'écran
expr_writing plotflag2 ??1 = doing expression writing to graph
indicRun indicFlags 1 = run indicator ON (le petit batonnet affiché quand la calculatrice réflechit)
indicOnly indicFlags ??1 = interrupts will only update runindicator tor
and not flash the cursor or APD
shift2nd shiftFlags 1 = touche 2nd pressé
shiftAlpha shiftFlags 1 = mode alpha
shiftALock shiftFlags 1 = mode alpha lock
AutoFill tblFlags ??1 = prompt for independent var in table
AutoCalc tblFlags 1 = calcule automatiquement les valeurs ds la table
grfSplit SGRFLAGS 1 = mode horiz
VertSplit SGRFLAGS 1 = mode G-T
write_on_graph SGRFLAGS ??1 = indicates display routines write to graphcreen
textwrite SGRFLAGS ??1 = small font writes to graph backup buffer
asm_flag1_0 ASM_FLAG1 disponible pour la prog asm
asm_flag1_1 ASM_FLAG1 "
asm_flag1_2 ASM_FLAG1 "
asm_flag1_3 ASM_FLAG1 "
asm_flag1_4 ASM_FLAG1 "
asm_flag1_5 ASM_FLAG1 "
asm_flag1_6 ASM_FLAG1 "
asm_flag1_7 ASM_FLAG1 "
asm_flag2_0 ASM_FLAG2 "
asm_flag2_1 ASM_FLAG2 "
asm_flag2_2 ASM_FLAG2 "
asm_flag2_3 ASM_FLAG2 "
asm_flag2_4 ASM_FLAG2 "
asm_flag2_5 ASM_FLAG2 "
asm_flag2_6 ASM_FLAG2 "
asm_flag2_7 ASM_FLAG2 "
asm_flag3_0 ASM_FLAG3 "
asm_flag3_1 ASM_FLAG3 "
asm_flag3_2 ASM_FLAG3 "
asm_flag3_3 ASM_FLAG3 "
asm_flag3_4 ASM_FLAG3 "
asm_flag3_5 ASM_FLAG3 "
asm_flag3_6 ASM_FLAG3 "
asm_flag3_7 ASM_FLAG3 "
Regardez dans le fichier ti83asm.inc à la section ou les modes sont définis. Il y a des nbres qui suivent les noms. Vous pouvez donc remplacer les noms des modes par les chiffres.
exemple :
set 0, (iy+2) : active le mode degré
res 5, (iy+3) : desactive le mode texte inverse
Vous voulez un petit programme illustrant cette leçon : let's go.
[Enter] pour changer de mode et [Clear] pour quitter
............début standard......
call _clrlcdfull ; efface l'écran
call _homeup
jr detecmode ; va au label pour détecter le mode
main: ; saisie des touches
call _getkey
cp 05h ; enter est pressée
jr z,chgmode
cp 09h ; clear est pressée
jr z,quit
jr main
detecmode:
ld hl,$0404
ld (currow),hl
bit grfnoaxis,(iy+grfdbflags) ; teste du mode
jr z,axes
jr nz,noaxes
axes:
ld hl,axtxt
call _puts ; affichage du mode correspondant
jr main
noaxes:
ld hl,noaxtxt
call _puts
jr main
chgmode:
bit grfnoaxis,(iy+grfdbflags) ; teste le mode
jr z,setaxes
res grfnoaxis,(iy+grfdbflags) ; désactive le mode
jr detecmode
setaxes:
set grfnoaxis,(iy+grfdbflags) ; active le mode
jr detecmode
quit:
ret
axtxt:
.db "AxesOn ",0
noaxtxt:
.db "AxesOff",0
.end
END