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 attachmentsxMenu.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.