Menusystem
Menusystemet är uppbyggt enligt:
<mode>,
<knapp up>,<knapp ner>,<knapp vänster>,<knapp
höger>,
<text uppe>,<text nere vänster>,<text nere höger>,
<Action Init>,<Action Run>
<mode> | Är uppbyggd av 4 bytes där dom 3 första är till för framtida expandering och det sista anger om och var klockan skall visas. ($ff = klocka av, annars anger den klockpositionen på displayen) |
<knapp *> | Visar vad som ska händ om man trycker på knapperna med samma namn, antigen så pekar dom på en ny menustruktur eller så pekar dom på en rutin som vi hoppar till när man trycker på knappen (om översta biten är satt). Detta gör att man kan skapa menyer som utför rutiner när man tex trycker på någon av knapparna. |
<text *> | Visar text på den aktuella positionen på displayen. |
<Action Init> | I detta fält fylles eventuella Init rutiner i, rutinen körs när menun startas |
<Action Run> | I detta fält fylles eventuellt en rutin som ska köras rn gång i varje loop. |
Till exempel ställa klockan menun:
SetClock: | dc.b | 0,0,0,DM_POS_CLK | ;Sätt klockan i övre höger hörn |
dc.l | 0,menu2_sub2,sys_menu2,Save_clock+IS_CODE | ;upp: ingen menu ;ner: Nästa inställning ;vänster: (avbryt) tillbaka till huvudmenun ;höger: Kodsnutt som sätter klockan till det inställda värdet |
|
dc.l | Time_txt,avbryt_txt,empty_time_txt | ;texter som visas | |
dc.l | Set_cur_at_clkpos,Set_Clock | ;Initiera klockinställningen, kör en knappavkodning som skriver ut den klocktid som matas in i nedre vänstra hörnet |
Som ger följande resultat:
1 (Vid start) | 2 (tryckt på 1) | 3 (tryckt på 344) | 4 (Tryckt på höger Ställ kockan) |
SetTime 19:15:33 Avbryt : : |
SetTime 19:15:32 Avbryt 1 : : |
SetTime 19:15:34 Avbryt 13:44: |
SetTime 13:44:35 Avbryt : : |