1

Temat: Menu Manager

co jeszcze powinien miec MenuManager

Ostatnio edytowany przez xxl (2020-03-24 00:33:16)

http://atari.pl/hsc/ad.php?i=1.

2

Odp: Menu Manager

brakuje najważniejszej funkcji w pętli: jmp $E477 :-)

A tak na poważanie, ile to to zajmuje, gdzie siedzi i jak się rozrasta przy dodawaniu itemów?

https://systemembedded.eu/
"...Mówił mi to jeden facet, który znał się na atari i takich różnych rzeczach. On mówił, że procesor 6502 to był początkowo procesor wojskowy. On ma tajne funkcje, nie wiadomo w ogóle, co one mogą robić..."
ABBUC Member #319. Preferowana forma kontaktu: email

3

Odp: Menu Manager

mozesz sobie dodac taki skok jak menu zwroci odpowiedni ID ;-)

zajmuje 512 bajtow (dwie strony pamieci), siedzi tam gdzie sie chce, przekazujesz adres struktury menu i w odpowiedzi otrzymujesz co user wybral.
dziala jak E:, otwierasz menu, klawiatura input, output na S:, return zamyka menu i daje ID elementu w akumulatorze, Esc to samo tylko daje $ff w akumulatorze.
ilosc submenu (na programowy stos zapisuje tylko adresy struktur sub/menu) tak, ze .... nieograniczony :-)
do itemow mozesz dodac skroty klawiszowe, maja flagi np. nieaktywny, w strukturze menu definiujesz wielkosc i ksztalt menu np. ile bedzie wierszy/kolumn - mozesz zrobic menu ktore bedzie mialo 5 wierszy i 5 kolumn ;-) albo pionowe / poziome, dowolna wielkosc etykiet itd.

http://atari.pl/hsc/ad.php?i=1.

4

Odp: Menu Manager

Fascynujące...
... nie do końca kumam "skok".. znaczy się 3 w prawo, 2 w dol i 2 w bok?

Jakiś case of usage  rzeczywisty? Jak tentegez budujesz strukturę menu? Udostępniasz czy tylko się chwalisz?

https://systemembedded.eu/
"...Mówił mi to jeden facet, który znał się na atari i takich różnych rzeczach. On mówił, że procesor 6502 to był początkowo procesor wojskowy. On ma tajne funkcje, nie wiadomo w ogóle, co one mogą robić..."
ABBUC Member #319. Preferowana forma kontaktu: email

5

Odp: Menu Manager

A klawiatura i rysowanie jest przez OS?

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

Odp: Menu Manager

Na pewno nie. OS się przecież wyłącza.

7

Odp: Menu Manager

pancio.net napisał/a:

Fascynujące...
... nie do końca kumam "skok".. znaczy się 3 w prawo, 2 w dol i 2 w bok?

o taki:

pancio.net napisał/a:

brakuje najważniejszej funkcji w pętli: jmp $E477 :-)

dely napisał/a:

A klawiatura i rysowanie jest przez OS?

klawiatura tak, a ekran nie - co prawda rysuje po akualnie otwarym ekranie wskaznik SAVMSC lub dla S2: ( http://www.atari.org.pl/forum/viewtopic.php?id=16197 ) aktywnym oknie, ale za pomoca wlasnych procedur. systemowe procedury sprawdzilem i sa nieakceprowalnie wolne ale z nimi program jest znacznie krotszy to fakt.

organizacja zostala tak przygotowana zeby wygodnie dzialac na systemowych prockach rysowania dlatego byc moze zostanie to uproszczone...

MO
.word 0
.byte x
.byte y
.byte szerokosc
.byte wsokosc
.byte odstep x
.byte odstep y
.byte ilosc pozycji
.byte ilosc kolumn
.byte pozycja kursora
.word element1
...
.word element n

element1
.byte ID
; .byte KEY
.byte flagi
.word MO1 submenu lub 0
.byte tekst

http://atari.pl/hsc/ad.php?i=1.

8

Odp: Menu Manager

Na razie ciekawie się zapowiada.
W kwestii GUI to chyba wzorcem jest to co zrobił FJC w fdisku do APT, uflash i innych.
Nie tylko menu, ale także listy, okienka dialogowe, przyciski, pola tekstowe, pola wyboru. W dodatku responsywne - działa w 40 i 80 kolumnach (VBXE lub soft. GR8).
Pytałem go nawet, czy kiedyś udostępni ten framework - owszem, jak będzie miał go kiedyś czas ogarnąć hmm

grzybson/SSG

9

Odp: Menu Manager

Ciekawie się zapowiada. Życzę powodzenia!

Atari 65XE + LDW SUPER 2000 + SIO2SD + Stereo + TTP + Ultimate Cart + Multicart XE

10

Odp: Menu Manager

menusy i gadgets to dwa rozne tematy, ale dobrze ze jest wiecej podejsc do sprawy gui, zreszta gadgets jeszcze jedne widze tu: http://www.atari.org.pl/forum/viewtopic … 24#p257624 w programie konfiguracyjnym Antonii.

szkoda ze zadne nie sa dostepne dla programistow - moja ambicja to MINIMALNE wymagania Menusow ktore bedzie mozna uzyc np. do gier np. tekstowkach albo przygodowkach (nie wszystko pokazalem...) :-)

mam zagwozdki czy to rozbudowac i w jakich granicach - np. molbym dodac skanowanie calej struktury menu i budowanie tablicy skrotow klawiszowych zamiast polegac na programiscie ze taka tablice dolaczy...
chce tez zeby xMenusy big_smile mialy granice na okolo 768 bajtow (3 strony pamieci) - zobaczymy.

http://atari.pl/hsc/ad.php?i=1.

11

Odp: Menu Manager

byla prosba o tlo pod menu:

troszke uproszczona struktura menu (bez pierwszego .word 0)

przyspieszona odrobine - kilka bajtow dluzsza ale ciagle mniej niz 3 strony pamieci :-)

---
dodana funkcja do definiowana wlasnego ksztaltu ramki
byc moze zwracany bedzie wskaznik a nie wartosc ID
byc moze w strukturze menu bedzie przewidziany adres lub indeks do funkcji ktora ma byc wywolana przed otwarciem menu/submenu

Ostatnio edytowany przez xxl (2020-03-25 20:12:31)

http://atari.pl/hsc/ad.php?i=1.

12

Odp: Menu Manager

beta, obsluga klawiszami strzalek, return i esc

start
        lda #.lo(MO2)
        ldx #.hi(MO2)
        jsr xMenu_OPEN
        sta elemid
        ldx #<hello
        ldy #>hello
        jsr $c642
        jmp start

hello   .byte c'selected ID: '
elemid  .byte $00
        .byte $9b

MO0
        .byte 7         ;         x
        .byte 17        ;         y
        .byte 19        ;         H
        .byte 2         ;         V
        .byte 1         ;         margin x
        .byte 1         ;         margin y
        .byte 3         ;         no of items
        .byte 3         ;         cols
        .byte 0         ;         cursor pos
        .word MO0_E1    ;         items
        .word MO0_E2
        .word MO0_E3
MO1
        .byte 0
        .byte 15
        .byte 7
        .byte 7
        .byte 1
        .byte 1
        .byte 6
        .byte 1
        .byte 0
        .word MO1_E1
        .word M_SPACE
        .word MO1_E2
        .word MO1_E3
        .word MO1_E4
        .word MO1_E5
MO2
        .byte 0
        .byte 23
        .byte 7
        .byte 0
        .byte 1
        .byte 0
        .byte 1
        .byte 1
        .byte 0
        .word MO2_E1
MO2_E1
        .byte c'0'         ; ID
        .byte 0            ; FLAGS
        .word MO1          ; MENU
        .byte d'Start',$9b ; LABEL
M_SPACE
        .byte 0
        .byte $80
        .word 0
        .byte d' ',$9b
MO1_E1
        .byte c'1'
        .byte 0
        .word 0
        .byte d'Test1',$9b
MO1_E2
        .byte c'2'
        .byte 0
        .word MO0
        .byte d'Test2',$9b
MO1_E3
        .byte c'3'
        .byte 0
        .word 0
        .byte d'Test3',$9b
MO1_E4
        .byte c'4'
        .byte 0
        .word 0
        .byte d'Test4',$9b
MO1_E5
        .byte c'5'
        .byte 0
        .word 0
        .byte d'Test5',$9b
MO0_E1
        .byte c'6'
        .byte 0
        .word 0
        .byte d'Test6',$9b
MO0_E2
        .byte c'7'
        .byte 0
        .word 0
        .byte d'Test7',$9b
MO0_E3
        .byte c'8'
        .byte 0
        .word 0
        .byte d'Test8',$9b

Ostatnio edytowany przez xxl (2020-03-26 10:40:19)

Post's attachments

xmenu.xex 913 b, liczba pobrań: 4 (od 2020-03-26) 

Tylko zalogowani mogą pobierać załączniki.
http://atari.pl/hsc/ad.php?i=1.

13

Odp: Menu Manager

grzybson napisał/a:

Na razie ciekawie się zapowiada.
W kwestii GUI to chyba wzorcem jest to co zrobił FJC w fdisku do APT, uflash i innych.
Nie tylko menu, ale także listy, okienka dialogowe, przyciski, pola tekstowe, pola wyboru. W dodatku responsywne - działa w 40 i 80 kolumnach (VBXE lub soft. GR8).
Pytałem go nawet, czy kiedyś udostępni ten framework - owszem, jak będzie miał go kiedyś czas ogarnąć hmm

Perhaps in the current circumstances, I will have time to address this request, finally. smile

Problem with my library is definitely code size, but once you start handling dialog boxes and file selectors with event-based callbacks (which is what is going on in FDISK, UFLASH, etc) and every control existing as a self-contained object, it takes a lot of code. GUIs are by their nature quite code-heavy.

14

Odp: Menu Manager

dodane skroty klawiszowe:

.byte c'1' ; ID
.byte $1F ; SHORTCUT KEY
.byte 0 ; FLAGS
.word 0 ; MENU
.byte d'Label',$9b ; LABEL

Post's attachments

xmenu.xex 1.03 kb, liczba pobrań: 4 (od 2020-03-26) 

Tylko zalogowani mogą pobierać załączniki.
http://atari.pl/hsc/ad.php?i=1.

15

Odp: Menu Manager

po optymalizacji skrocila sie o 70 bajtow. menusy same skanuja cala strukture i generuja tablice skrotow klawiszowych, proramista juz nie musi sie martwic.

Post's attachments

xmenu.xex 983 b, liczba pobrań: 3 (od 2020-03-26) 

Tylko zalogowani mogą pobierać załączniki.
http://atari.pl/hsc/ad.php?i=1.

16

Odp: Menu Manager

produkt gotowy, przeszedl kolejne optymalizacje, zajmuje 3 strony pamieci, dodatkowo otrzymal relokator.
dodajac go do swojego programu wystarczy dolaczyc go na poczatku, po ini sam sie zrelokuje (pierwszy bajt binarki to adres relokacji, mozemy relokowac takze proramowy stos oraz bufor dla tla menu - odpowiednio drugi i trzeci adres na poczatku binarki)
oczywiscie gdyby korzystac z xBiosa relokacje moznaby przeprowadzic w locie ale dla userow DOS zostala przygotowana wersja samorelokujaca na ini.

jesli chcemy korzystac ze skrotow klawiszowych wywolujemy procedure ze skasowanym znacznikiem C=0
c=1 - nie bedzie generowana tablica skrotow klawiszowych

xMenu_OPEN       equ xMenu+$1B

        clc             ; + shortcut keys
        ;sec            ; without shortcuts keys
        lda #.lo(MenuObject)
        ldx #.hi(MenuObject)
        jsr xMenu_OPEN

        return: A = selected ID


i tyle.

przykladowy program:

xMenu         equ $5000
xMenu_OPEN    equ xMenu+1B

        org $2000

start   clc             ; + shortcut keys
        ;sec              ; without shortcuts keys
        lda #.lo(MO2)
        ldx #.hi(MO2)
        jsr xMenu_OPEN
        sta elemid
        ldx #<hello
        ldy #>hello
        jsr $c642
        jmp start

hello   .byte c'selected ID: '
elemid  .byte $00
        .byte $9b

MO0
        .byte 9         ;         x
        .byte 17        ;         y
        .byte 25        ;         H
        .byte 2         ;         V
        .byte 1         ;         margin x
        .byte 1         ;         margin y
        .byte 3         ;         no of items
        .byte 3         ;         cols
        .byte 0         ;         cursor pos
        .word MO0_E1    ;         items
        .word MO0_E2
        .word MO0_E3
MO1
        .byte 0
        .byte 15
        .byte 9
        .byte 7
        .byte 1
        .byte 1
        .byte 6
        .byte 1
        .byte 0
        .word MO1_E1
        .word M_SPACE
        .word MO1_E2
        .word MO1_E3
        .word MO1_E4
        .word MO1_E5
MO2
        .byte 0
        .byte 23
        .byte 7
        .byte 0
        .byte 1
        .byte 0
        .byte 1
        .byte 1
        .byte 0
        .word MO2_E1
MO2_E1
        .byte c'0'         ; ID
        .byte 0            ; KEY
        .byte 0            ; FLAGS
        .word MO1          ; MENU
        .byte d'Start',$9b ; LABEL
M_SPACE
        .byte 0
        .byte 0
        .byte $80
        .word 0
        .byte d' ',$9b
MO1_E1
        .byte c'1'
        .byte $1f  ;1      ; KEY
        .byte 0
        .word 0
        .byte d'Test ''1',$9b
MO1_E2
        .byte c'2'
        .byte 0            ; KEY
        .byte 0
        .word MO0
        .byte d'Test2  ',$9b
MO1_E3
        .byte c'3'
        .byte $1a  ;3      ; KEY
        .byte 0
        .word 0
        .byte d'Test ''3',$9b
MO1_E4
        .byte c'4'
        .byte $18  ;4      ; KEY
        .byte 0
        .word 0
        .byte d'Test ''4',$9b
MO1_E5
        .byte c'5'
        .byte $1d  ;5      ; KEY
        .byte 0
        .word 0
        .byte d'Test ''5',$9b
MO0_E1
        .byte c'6'
        .byte $1b  ;6      ; KEY
        .byte 0
        .word 0
        .byte d'Test ''6',$9b
MO0_E2
        .byte c'7'
        .byte $33  ;7      ; KEY
        .byte 0
        .word 0
        .byte d'Test ''7',$9b
MO0_E3
        .byte c'8'
        .byte $35  ;8      ; KEY
        .byte 0
        .word 0
        .byte d'Test ''8',$9b


        run start

Post's attachments

xMenu.lib 912 b, liczba pobrań: 1 (od 2020-03-27) 

xmenu.xex 1.1 kb, liczba pobrań: 3 (od 2020-03-27) 

Tylko zalogowani mogą pobierać załączniki.
http://atari.pl/hsc/ad.php?i=1.