Les modes

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      DESCRIPTION

-------------------------------------------------------------

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                                    "

 
 

Une petite astuce :

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