Disk menu's

Pagina 1/6
| 2 | 3 | 4 | 5 | 6

Door Guts

Expert (87)

afbeelding van Guts

19-01-2012, 21:23

Hi,
I'm looking for some easy to use disk menu's. Back in the day got some MSX2 disks with a menu.
So i can select games/programas to load from the disk.

When can find those menu's or the list's?

Aangemeld of registreer om reacties te plaatsen

Van DanySoft

Champion (450)

afbeelding van DanySoft

20-01-2012, 18:22

You see the menu ?
Take this source for BASIC and write the BASIC to create the new menu (program BASIC) for BASIC.
But the array is present all the files on disk A or B, is interess for disk B, ADD second array for DIM.

10 '********************************
 20 '* *
 30 '* Files to array *
 40 '* *
 50 '* *
 60 '* Arnold Kurzynski *
 70 '* 01.09.2002 *
 80 '* *
 90 '********************************
 100 '
 110 '
 120 CLEAR 2048
 130 ST=0 'drive number
 140 A1=PEEK(62290)*256+PEEK(62289) 'DMA address
 150 DIM F$(111) 'files array
 160 L=0 'files counter
 170 FOR T=0 TO 111 'spaces to array
 180 F$(T)=SPACE$(12)
 190 NEXT
 200 A$=DSKI$(ST,1) 'drive: 360 kB or 720 kB ?
 210 D=PEEK(A1)
 220 IF D=248 THEN Z=5 ELSE Z=7
 230 FR=DSKF(0) 'disk free space
 240 FOR SK=0 TO 6
 250 AD=A1
 260 A$=DSKI$(ST,SK+Z) 'sector read
 270 FOR P=0 TO 15
 280 IF PEEK(AD)<32 OR PEEK(AD)>126 THEN AD=AD+32:GOTO 360
 290 P$=""
 300 FOR W=0 TO 10 'name read
 310 P$=P$+CHR$(PEEK(AD))
 320 AD=AD+1
 330 NEXT
 340 F$(L)=LEFT$(P$,8)+"."+RIGHT$(P$,3)
 350 L=L+1:AD=AD+21
 360 NEXT
 370 NEXT
 380 FOR T=0 TO L-1 'print data
 390 PRINTF$(T)
 400 NEXT
 410 PRINT
 420 PRINT"File(s):";L
 430 PRINT"Free:";FR;"kB"
 440 END

bye bye

Van Manuel

Ascended (18162)

afbeelding van Manuel

20-01-2012, 19:10

I got a menu program from BaVi-BBS which I used for a loooong time... It basically listed the files (with FILES) on the screen and added a cursor with which you can select them to run.

Van Guts

Expert (87)

afbeelding van Guts

22-01-2012, 17:41

@DanySoft: Thanks for the list, but i'm looking for a disk menu. That show files and i can use cursur to select a .BAS file ot run it, similar what Manual say.

@Manual: Yes that kind of menu i'm looking, do you have a link of where can i find it?

Van Manuel

Ascended (18162)

afbeelding van Manuel

22-01-2012, 22:38

Nope, I don't know if it's online. And I didn't write it myself (just adapted it for DOS2 and some other things), so I can't just upload it to MRC.

Van DanySoft

Champion (450)

afbeelding van DanySoft

22-01-2012, 23:23

Pant, Pant! 

I found the source for you. Big smile

DiskMenu 80 column with a blink included.

10 ' -- DISKMENU --   (C)1992 BY ARSOFT
20 SCREEN 0: WIDTH 80: KEY OFF: CLS: DIM X(5,2)
30 COLOR 15,4,4: COLOR=(4,1,2,3): COLOR=(2,4,0,0): COLOR=(3,7,7,0)
40 PRINT STRING$(79,"=")
50 TT$="D I S K M E N U": LOCATE 40-LEN(TT$)/2,1: PRINT TT$
60 PRINT STRING$(79,"=")
70 EX$="*": Y=3: GOSUB 130 ' kies file
80 E$=RIGHT$(FI$,3)
90 IF E$="BAS" OR E$="LDR" THEN RUN FI$
100 IF E$="BIN" THEN BLOAD FI$,R
110 IF E$="COM" OR E$="BAT" THEN LOCATE 0,MY+2:PRINT"Deze file ... MSX-DOS opgestart worden!": END
120 LOCATE 0,MY+2: PRINT"Dit soort files kan ik niet laden...<toets>";:A$=INPUT$(1): CLS: GOTO 40
130 ' -- file kiezen
140 FOR I=BASE(1) TO BASE(1)+239: VPOKE I,0: NEXT I
150 VDP(14)=&HF0: VDP(13)=&H32: XX=0: YY=Y: YO=YY: XO=XX
160 FOR I=0 TO 5: READ S(I): FOR J=0 TO 2: READ X(I,J): NEXT J,I
170 DATA 0,127,248,0, 1,3,255,192, 3,31,254,0
180 DATA 5,255,240,0, 6,7,255,128, 8,63,252,0
190 POKE &HF3B0,78: LOCATE 0,Y: FILES "*."+EX$: MY=CSRLIN: POKE &HF3B0,80
200 FOR I=0 TO 2: VPOKE BASE(1)+10*YY+S(XX)+I,X(XX,I): NEXT I
210 ST=STICK(0): IF ST=0 THEN GOTO 260
220 IF ST=1 THEN YY=YY-1: GOSUB 270
230 IF ST=3 THEN XX=XX+1: GOSUB 270
240 IF ST=5 THEN YY=YY+1: GOSUB 270
250 IF ST=7 THEN XX=XX-1: GOSUB 270
260 IF STRIG(0)=0 THEN GOTO 210 ELSE VDP(14)=0: GOSUB 330: RETURN
270 IF YY<Y THEN YY=Y: RETURN ELSE IF YY>MY THEN YY=MY: RETURN
280 IF XX<0 THEN XX=0: RETURN ELSE IF XX>5  THEN XX=5 : RETURN
290 IF VPEEK(80*YY+(XX*13+1))=32 THEN YY=YO: XX=XO: RETURN
300 FOR I=0 TO 2: VPOKE BASE(1)+10*YO+S(XO)+I,0: NEXT I
310 FOR I=0 TO 2: VPOKE BASE(1)+10*YY+S(XX)+I,X(XX,I): NEXT I
320 YO=YY: XO=XX: RETURN
330 ' -- filenaam inlezen
340 AD=80*YY+(XX*13+1): FI$=""
350 FOR I=0 TO 11: FI$=FI$+CHR$(VPEEK(AD+I)): NEXT I
360 RETURN

I hope you like it.
bye bye

Van Vampier

Prophet (2385)

afbeelding van Vampier

23-01-2012, 03:31

correction for line 160
160 restore:FOR I=0 TO 5: READ S(I): FOR J=0 TO 2: READ X(I,J): NEXT J,I

Van Guts

Expert (87)

afbeelding van Guts

23-01-2012, 09:22

Thanks DanySoft this is the kind disk menu i'm looking for, and also in dutch BA-team
Yersterday i was reading old MSX magazine and read about a program Automenu.
Have someone a dsk file of it?

And Vampire thanks for the fix.

Van Wolverine_nl

Paragon (1158)

afbeelding van Wolverine_nl

23-01-2012, 11:16

There are many pre-fab diskmenu's out there, i always wrote my own, cause there are menu's with excessive code which makes something simple complex as hell Evil lol DanySoft's version is pretty basic and easy to modify.

Van NYYRIKKI

Enlighted (5880)

afbeelding van NYYRIKKI

23-01-2012, 17:03

Don't use the first posted menu system... It will not work with HDD's... 

I now also wrote a little menu system for you to modify:

10 ' Small menu example Made By: NYYRIKKI
    20 DEFINT A-Z:DIM NN$(200)
    30 FM$="????????.BAS" 'File mask '?' means any character
    40 DA$="0E11110E12C51100C10E1ACD7DF3C11180C0CD7DF332F8F7C9"
    50 AD=&HC080:POKE AD,0'Drive: 0=Default, 1=A: 2=B: ... 8=H:
    60 FOR I=1 TO 12:AD=AD-(I<>10):POKE AD,ASC(MID$(FM$,I,1)):NEXT I
    70 FOR I=&HC08C TO &HC0C0:POKE I,0:NEXT I
    80 FOR I=0 TO 25:POKE &HC000+I,VAL("&H"+MID$(DA$,I*2+1,2)):NEXT I
    90 DEFUSR=&HC000:DEFUSR1=&HC003
    100 IF USR(0)>0 THEN PRINT"Error: No files to load":END
    110 FC=FC+1:FOR I=1 TO 12:NN$(FC)=NN$(FC)+CHR$(PEEK(&HC100+I))
    120 IF I=8 THEN NN$(FC)=NN$(FC)+"."
    130 NEXT I
    140 IF USR1(0)=0 THEN 110
    150 CLS:NN$(0)=SPACE$(12):NN$(FC+1)=NN$(0)
    160 PRINT "------------------"
    170 PRINT "|  ";NN$(S);  "  |"
    180 PRINT "| >";NN$(S+1);"< |"
    190 PRINT "|  ";NN$(S+2);"  |"
    200 PRINT "------------------"
    210 A$=INPUT$(1):S=S-(A$=CHR$(31)ANDS<FC-1)+(A$=CHR$(30)ANDS>0)
    220 IF A$<>" " AND A$<>CHR$(13) THEN LOCATE 0,1:GOTO 170
    230 RUNNN$(S+1)

Van Wolverine_nl

Paragon (1158)

afbeelding van Wolverine_nl

25-01-2012, 09:47

LOL i need blueMSX here at my job to test this stuff directly LOL!

Pagina 1/6
| 2 | 3 | 4 | 5 | 6