epbas.lgb.hu :: Enterprise-128 EXOS file analyzer, lister and disassembler

File name: /tmp/phpq1F9ZS (11253 bytes) Options: bin=None cset='UK' dasm='' html='' info='' out='/tmp/phpq1F9ZS.out' EP-ASCII: UK EXOS header pos/serial: #0 at 0x0 EXOS type/header: 0x4 [00 04 D5 2B 00 00 00 00 00 00 00 00 00 00 00 00] EXOS type determined: IS-BASIC program (single)
Program: 0x0, size: 0x2bd5 bytes.
100 PROGRAM "FDISK.BAS" 110 PRINT "FDISK version 0.7" 120 ALLOCATE 9 130 CODE GETSEGMENT=HEX$("F7,18,67,69,C9") 140 CODE FREESEGMENT=HEX$("4D,F7,19,C9") 150 LET WS=USR(GETSEGMENT,0) 160 LET DEMO=0 170 TEXT 40 180 WHEN EXCEPTIONUSENINCSIDE 190 EXT "IDEINFO "&HEXA$(WS,2)&",3FF0" 200 END WHEN 210 LET MAXDRIVE=SPEEK(WS,16374) 220 IF MAXDRIVE=0THEN 230 PRINT "No Harddisk!" 240 GOTO 2400 250 END IF 260 PRINT AT22,1:"IDE ROM at "&HEXA$(SPEEK(WS,16369),2) 270 PRINT "RAM area from "&HEXA$(SPEEK(WS,16370),2)&":"&HEXA$(SPEEK(WS,16372),2)&HEXA$(SPEEK(WS,16371),2) 280 PRINT "Detected: ";SPEEK(WS,16373);"controllers, ";MAXDRIVE;"disks"; 290 NUMERIC LBA(0TOMAXDRIVE-1),CHS(0TOMAXDRIVE-1,1TO3) 300 SET VIDEOX40 310 SET VIDEOY1 320 SET VIDEOMODE2 330 FOR I=0TOMAXDRIVE-1 340 OPEN #50+I:"video:" 350 PRINT #50+I:CHR$(27);"o"; 360 SET #50+I:PALETTEBLACK,GREEN,BLACK,CYAN,BLACK,YELLOW,BLACK,RED 370 DISPLAY #50+I:ATI+1FROM1TO1 380 SET #50+I:INK5 390 PRINT #50+I:"HDD-";I; 400 IF DEMO=0THEN 410 EXT "IDEIDENTIFY "&HEXA$(WS,2)&",0000,"&HEXA$(I,1) 420 ELSE 430 EXT "sl £"&HEXA$(WS,2)&",0,511,"id."&HEXA$(I,2)&""" 440 END IF 450 PRINT #50+I,AT1,20:; 460 SET #50+I:INK3 470 FOR N=0TO39STEP2 480 PRINT #50+I:CHR$(SPEEK(WS,55+N));CHR$(SPEEK(WS,54+N)); 490 NEXT 500 PRINT #50+I,AT1,60:; 510 SET #50+I:INK7 520 FOR N=0TO19STEP2 530 PRINT #50+I:CHR$(SPEEK(WS,21+N));CHR$(SPEEK(WS,20+N)); 540 NEXT 550 IF BIT(1,SPEEK(WS,106))=1THEN 560 LET LBA(I)=SPEEK32(114) 570 IF BIT(1,SPEEK(WS,99))=1THENLET LBA(I)=SPEEK32(120) 580 IF BIT(2,SPEEK(WS,173))=1THEN 590 LET LBA(I)=SPEEK32(200) 600 IF SPEEK16(204)>0THENLET LBA(I)=4294967295 610 END IF 620 LET CHS(I,1)=SPEEK16(108) 630 LET CHS(I,2)=SPEEK16(110) 640 LET CHS(I,3)=SPEEK16(112) 650 ELSE 660 LET CHS(I,1)=SPEEK16(2) 670 LET CHS(I,2)=SPEEK16(6) 680 LET CHS(I,3)=SPEEK16(12) 690 LET LBA(I)=CHS(I,1)*CHS(I,2)*CHS(I,3) 700 END IF 710 SET #50+I:INK1 720 PRINT #50+I,AT1,8,USING"£££££££":IP(LBA(I)/2048); 730 SET #50+I:INK5 740 PRINT #50+I:"Mb"; 750 NEXT 760 NUMERIC AKTIV(1TO28),KEZDET(1TO28),TIPUS(1TO28),MERET(1TO28) 770 LET DRV=0 780 DO 790 SET #50+DRV:PALETTEBLUE,GREEN,BLUE,CYAN,BLUE,YELLOW,BLUE,RED 800 LET KEY$=INKEY$ 810 IF KEY$=""THENGOTO 800 820 SELECT CASEORD(KEY$) 830 CASE 13 840 SET #50+DRV:PALETTEBLACK,GREEN,BLACK,CYAN,BLACK,YELLOW,BLACK,RED 850 DISPLAY TEXT 860 CLEAR SCREEN 870 PRINT AT1,2:"Selected drive:" 880 DISPLAY #50+DRV:AT2FROM1TO1 890 CALL MBR 900 DISPLAY TEXT 910 FOR I=0TOMAXDRIVE-1 920 DISPLAY #50+I:ATI+1FROM1TO1 930 NEXT 940 CASE 176 950 SET #50+DRV:PALETTEBLACK,GREEN,BLACK,CYAN,BLACK,YELLOW,BLACK,RED 960 LET DRV=DRV-1 970 IF DRV<0THENLET DRV=MAXDRIVE-1 980 CASE 180 990 SET #50+DRV:PALETTEBLACK,GREEN,BLACK,CYAN,BLACK,YELLOW,BLACK,RED 1000 LET DRV=DRV+1 1010 IF DRV=MAXDRIVETHENLET DRV=0 1020 CASE ELSE 1030 END SELECT 1040 LOOP UNTILKEY$=CHR$(27) 1050 DEF MBR 1060 STRING KEY$*1 1070 NUMERIC PART,J,SZABAD(1TO5,1TO2),SZ,SZM 1080 PRINT AT3,1:"BOOT TYPE START SIZE"; 1090 CALL READS(0,DRV,0,1) 1100 IF SPEEK16(510)<>43605THEN 1110 FOR I=0TO509 1120 SPOKE WS,I,0 1130 NEXT 1140 CALL SPOKE16(510,43605) 1150 END IF 1160 SET VIDEOMODE0 1170 FOR J=1TO4 1180 OPEN #J:"video:" 1190 PRINT #J:CHR$(27);"o"; 1200 SET #J:PALETTEBLACK,YELLOW,BLACK,CYAN 1210 DISPLAY #J:ATJ+3FROM1TO1 1220 CALL PGET(0,J,J) 1230 CALL INFO(J) 1240 NEXT 1250 LET SZ=1 1260 LET SZABAD(SZ,2)=SZABADKA(1) 1270 IF SZABAD(SZ,2)>0THEN 1280 LET SZABAD(SZ,1)=1 1290 LET SZ=SZ+1 1300 END IF 1310 FOR J=1TO4 1320 IF TIPUS(J)<>0THEN 1330 LET SZABAD(SZ,2)=SZABADKA(KEZDET(J)+MERET(J)+1) 1340 IF SZABAD(SZ,2)>0THEN 1350 LET SZABAD(SZ,1)=KEZDET(J)+MERET(J) 1360 LET SZ=SZ+1 1370 END IF 1380 END IF 1390 NEXT 1400 FOR J=SZTO5 1410 LET SZABAD(J,2)=0 1420 LET SZABAD(J,1)=0 1430 NEXT 1440 PRINT AT9,1:"Free space" 1450 PRINT AT9,20:"START"; 1460 PRINT AT9,31:"SIZE"; 1470 LET SZM=SZ-1 1480 FOR J=1TOSZM 1490 OPEN #J+40:"video:" 1500 PRINT #J+40:CHR$(27);"o"; 1510 SET #J+40:PALETTEBLACK,WHITE,BLACK,CYAN 1520 DISPLAY #J+40:ATJ+9FROM1TO1 1530 SET #J+40:INK3 1540 PRINT #J+40,AT1,1:J;"."; 1550 PRINT #J+40,AT1,16,USING"£££££££££":SZABAD(J,1); 1560 SET #J+40:INK1 1570 PRINT #J+40,AT1,27,USING"£££££££££":ROUND(SZABAD(J,2)/2,0); 1580 PRINT #J+40:"Kb"; 1590 NEXT 1600 LET PART=1 1610 DO 1620 SET #PART:PALETTEBLUE,YELLOW,BLUE,CYAN 1630 LET KEY$=INKEY$ 1640 IF KEY$=""THENGOTO 1630 1650 SELECT CASEORD(KEY$) 1660 CASE 13 1670 IF TIPUS(PART)=5ORTIPUS(PART)=15THEN 1680 CALL EXTENDED(KEZDET(PART)) 1690 END IF 1700 LET KEY$=CHR$(27) 1710 CASE 176 1720 SET #PART:PALETTEBLACK,YELLOW,BLACK,CYAN 1730 LET PART=PART-1 1740 IF PART<1THENLET PART=4 1750 CASE 180 1760 SET #PART:PALETTEBLACK,YELLOW,BLACK,CYAN 1770 LET PART=PART+1 1780 IF PART=5THENLET PART=1 1790 CASE 99,67 1800 IF SZABAD(1,2)>0THEN 1810 LET SZ=1 1820 DO 1830 SET #SZ+40:PALETTEBLUE,WHITE,BLUE,CYAN 1840 LET KEY$=INKEY$ 1850 IF KEY$=""THENGOTO 1840 1860 SELECT CASEORD(KEY$) 1870 CASE 176 1880 SET #SZ+40:PALETTEBLACK,WHITE,BLACK,CYAN 1890 LET SZ=SZ-1 1900 IF SZ<1THENLET SZ=SZM 1910 CASE 180 1920 SET #SZ+40:PALETTEBLACK,WHITE,BLACK,CYAN 1930 LET SZ=SZ+1 1940 IF SZ=SZM+1THENLET SZ=1 1950 CASE ELSE 1960 END SELECT 1970 LOOP UNTILKEY$=CHR$(13) 1980 DISPLAY TEXT 1990 CLEAR SCREEN 2000 PRINT "Please enter values for new partition (ENTER for default value)." 2010 PRINT "Default values: 1=FAT12, first sector of free area, 65535" 2020 LET TIPUS(PART)=INP("type",0,255,1) 2030 LET KEZDET(PART)=INP("start",SZABAD(SZ,1),SZABAD(SZ,1)+SZABAD(SZ,2)-4,SZABAD(SZ,1)) 2040 LET MERET(PART)=INP("size",4,SZABAD(SZ,2),65535) 2050 CALL PPUT(0,PART,PART) 2060 CALL WRITES(0,DRV,0,1) 2070 LET KEY$=CHR$(27) 2080 END IF 2090 CASE 162 2100 SET #102:INK3 2110 PRINT AT8,1:"Press 'Y' to delete partiton!"; 2120 SET #102:INK1 2130 DO 2140 LET KEY$=INKEY$ 2150 LOOP UNTILKEY$<>"" 2160 IF KEY$="Y"THEN 2170 LET TIPUS(PART)=0 2180 LET AKTIV(PART)=0 2190 LET KEZDET(PART)=0 2200 LET MERET(PART)=0 2210 CALL PPUT(0,PART,PART) 2220 CALL WRITES(0,DRV,0,1) 2230 LET KEY$=CHR$(27) 2240 ELSE 2250 LET KEY$=CHR$(162) 2260 PRINT AT8,1:" "; 2270 END IF 2280 CASE ELSE 2290 END SELECT 2300 LOOP UNTILKEY$=CHR$(27) 2310 FOR J=1TO4 2320 CLOSE #J 2330 NEXT 2340 FOR J=1TOSZM 2350 CLOSE #J+40 2360 NEXT 2370 CLEAR TEXT 2380 END DEF 2390 TEXT 40 2400 CALL USR(FREESEGMENT,WS) 2410 END 2420 DEF PGET(CIM,PART,SORSZAM) 2430 LET MUTATO=CIM+446+(PART-1)*16 2440 LET AKTIV(SORSZAM)=SPEEK(WS,MUTATO) 2450 LET TIPUS(SORSZAM)=SPEEK(WS,MUTATO+4) 2460 LET KEZDET(SORSZAM)=SPEEK32(MUTATO+8) 2470 LET MERET(SORSZAM)=SPEEK32(MUTATO+12) 2480 END DEF 2490 DEF PPUT(CIM,PART,SORSZAM) 2500 LET MUTATO=CIM+446+(PART-1)*16 2510 SPOKE WS,MUTATO,AKTIV(SORSZAM) 2520 SPOKE WS,MUTATO+4,TIPUS(SORSZAM) 2530 CALL SPOKE32(MUTATO+8,KEZDET(SORSZAM)) 2540 CALL SPOKE32(MUTATO+12,MERET(SORSZAM)) 2550 END DEF 2560 DEF INFO(S) 2570 SET #S:INK3 2580 IF AKTIV(S)=0THEN 2590 PRINT #S:" NO "; 2600 ELSE 2610 PRINT #S:" YES "; 2620 END IF 2630 SET #S:INK1 2640 SELECT CASETIPUS(S) 2650 CASE 0 2660 PRINT #S:"Undefinied", 2670 CASE 1,17,141,170,193,209,225 2680 PRINT #S:"FAT-12 ", 2690 CASE 4,20,134,144,154,182,198,212 2700 PRINT #S:"FAT-16 ", 2710 CASE 11,12,27,28,139,140,151,152,188,203,204 2720 PRINT #S:"FAT-32 ", 2730 CASE 5,15,145,155,197,213,225,228 2740 PRINT #S:"Extended", 2750 CASE 6,14,22,30,146,154,206,214 2760 PRINT #S:"BigDOS ", 2770 CASE 7,39,135,183,199 2780 PRINT #S:"NTFS ", 2790 CASE 65,67,130,131,133,136,138,142,147,194,195,240,253 2800 PRINT #S:"Linux ", 2810 CASE ELSE 2820 PRINT #S:"Other ", 2830 END SELECT 2840 IF TIPUS(S)<>0THEN 2850 SET #S:INK3 2860 PRINT #S,USING"££££££££££":KEZDET(S); 2870 PRINT #S:" "; 2880 SET #S:INK1 2890 PRINT #S,USING"££££££££££":ROUND(MERET(S)/2,0); 2900 PRINT #S:"Kb"; 2910 ELSE 2920 END IF 2930 END DEF 2940 DEF HEXA$(SZAM,HOSSZ) 2950 NUMERIC I,M 2960 STRING H$*8 2970 LET H$="" 2980 FOR I=1TOHOSSZ 2990 LET M=MOD(SZAM,16) 3000 LET SZAM=(SZAM-M)/16 3010 IF M<10THEN 3020 LET H$=CHR$(M+48)&H$ 3030 ELSE 3040 LET H$=CHR$(M+55)&H$ 3050 END IF 3060 NEXT 3070 LET HEXA$=H$ 3080 END DEF 3090 DEF READS(C,D,SS,SN) 3100 IF DEMO=0THEN 3110 EXT "IDEREAD "&HEXA$(WS,2)&","&HEXA$(C,4)&","&HEXA$(D,1)&","&HEXA$(SS,8)&","&HEXA$(SN,2) 3120 ELSE 3130 EXT "sl £"&HEXA$(WS,2)&""&HEXA$(C,4)&""&HEXA$(C+511,4)&",""&HEXA$(SS,8)&"."&HEXA$(D,2)&""" 3140 END IF 3150 END DEF 3160 DEF SPEEK32(M) 3170 LET SPEEK32=SPEEK(WS,M)+SPEEK(WS,M+1)*256+SPEEK(WS,M+2)*65536+SPEEK(WS,M+3)*16777216 3180 END DEF 3190 DEF SPEEK16(M) 3200 LET SPEEK16=SPEEK(WS,M)+SPEEK(WS,M+1)*256 3210 END DEF 3220 DEF WRITES(C,D,SS,SN) 3230 IF DEMO=0THEN 3240 EXT "IDEWRITE "&HEXA$(WS,2)&","&HEXA$(C,4)&","&HEXA$(D,1)&","&HEXA$(SS,8)&","&HEXA$(SN,2) 3250 ELSE 3260 EXT "ss £"&HEXA$(WS,2)&""&HEXA$(C,4)&""&HEXA$(C+511,4)&",""&HEXA$(SS,8)&"."&HEXA$(D,2)&""" 3270 END IF 3280 END DEF 3290 DEF SPOKE16(M,N) 3300 NUMERIC X 3310 LET X=MOD(N,256) 3320 SPOKE WS,M,X 3330 LET N=(N-X)/256 3340 SPOKE WS,M+1,N 3350 END DEF 3360 SPOKE WS,M,N 3370 DEF SPOKE32(M,N) 3380 NUMERIC X,I 3390 FOR I=0TO3 3400 LET X=MOD(N,256) 3410 SPOKE WS,M+I,X 3420 LET N=(N-X)/256 3430 NEXT 3440 END DEF 3450 DEF INP(SZ$,MIN,MAX,DEFAULT) 3460 STRING N$ 3470 NUMERIC N 3480 DO 3490 INPUT PROMPTSZ$&":":N$ 3500 LET N=VAL(N$) 3510 IF N$=""THENLET N=DEFAULT 3520 LOOP UNTIL(N<=MAXANDN>=MIN) 3530 LET INP=N 3540 END DEF 3550 DEF SZABADKA(N) 3560 NUMERIC P,F 3570 LET F=LBA(DRV)-N 3580 LET P=1 3590 DO 3600 IF TIPUS(P)>0THEN 3610 IF N>=KEZDET(P)ANDN<=(KEZDET(P)+MERET(P))THEN 3620 LET F=0 3630 ELSE 3640 IF N<KEZDET(P)THENLET F=MIN(F,KEZDET(P)-N) 3650 END IF 3660 END IF 3670 LET P=P+1 3680 LOOP UNTILF=0ORP=5 3690 IF F<4THENLET F=0 3700 LET SZABADKA=F 3710 END DEF 3720 DEF BIT(B,N) 3730 NUMERIC I,A 3740 LET I=-1 3750 DO 3760 LET I=I+1 3770 LET A=MOD(N,2) 3780 LET N=(N-A)/2 3790 LOOP UNTILI=B 3800 LET BIT=A 3810 END DEF 3820 HANDLER NINCSIDE 3830 LET DEMO=1 3840 EXT "sl £"&HEXA$(WS,2)&",£3ff0,£3ff7,"info"" 3850 CONTINUE 3860 END HANDLER 3870 DEF EXTENDED(CIM) 3880 STRING KEY$*1 3890 NUMERIC PART,J,SZABAD(1TO50,1TO2),SZ,SZM,TCIM,PCIM(5TO28),ECIM 3900 LET TCIM=0 3910 LET ECIM=CIM 3920 LET J=5 3930 SET VIDEOMODE0 3940 PRINT AT3,1:"BOOT TYPE","START SIZE"; 3950 DO 3960 LET TCIM=TCIM+512 3970 CALL READS(TCIM,DRV,ECIM,1) 3980 IF SPEEK16(TCIM+510)<>43605THEN 3990 FOR I=TCIMTOTCIM+509 4000 SPOKE WS,I,0 4010 NEXT 4020 CALL SPOKE16(TCIM+510,43605) 4030 END IF 4040 CALL PGET(TCIM,1,J) 4050 IF TIPUS(J)>0THEN 4060 OPEN #J:"video:" 4070 PRINT #J:CHR$(27);"o"; 4080 SET #J:PALETTEBLACK,YELLOW,BLACK,CYAN 4090 DISPLAY #J:ATJ-1FROM1TO1 4100 CALL PGET(TCIM,1,J) 4110 LET PCIM(J)=TCIM 4120 LET KEZDET(J)=KEZDET(J)+ECIM 4130 CALL INFO(J) 4140 LET J=J+1 4150 END IF 4160 CALL PGET(TCIM,2,J) 4170 LET ECIM=CIM+KEZDET(J) 4180 LOOP UNTILTIPUS(J)=0ORJ=27 4190 LET J=J-1 4200 LET PART=5 4210 DO 4220 SET #PART:PALETTEBLUE,YELLOW,BLUE,CYAN 4230 LET KEY$=INKEY$ 4240 IF KEY$=""THENGOTO 4230 4250 SELECT CASEORD(KEY$) 4260 CASE 176 4270 SET #PART:PALETTEBLACK,YELLOW,BLACK,CYAN 4280 LET PART=PART-1 4290 IF PART<5THENLET PART=J 4300 CASE 180 4310 SET #PART:PALETTEBLACK,YELLOW,BLACK,CYAN 4320 LET PART=PART+1 4330 IF PART=J+1THENLET PART=5 4340 CASE ELSE 4350 END SELECT 4360 LOOP UNTILKEY$=CHR$(27) 4370 FOR PART=5TOJ 4380 CLOSE #PART 4390 NEXT 4400 END DEF
EXOS header pos/serial: #1 at 0x2be5 EXOS type/header: 0xa [00 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00] EXOS type determined: End of module
End of FILE parsing, because: End-of-module header got (type=10)



Enterprise-128 EXOS file analyzer, lister and disassembler v0.5.8 ©2012,2013 "LGB" Gábor Lénárt (lgb at-sign lgb dot hu)