1a2
> $B-,I-,U-,S&
9c10
< '       97828 Marktheidenfeld            71134 Aidlingen
---
> '             97828 Marktheidenfeld            71134 Aidlingen
13c14
< '             Anton Stepper @ Maus W          Claus Brod @ BB
---
> '             Anton Stepper @ W               Claus Brod @ BB
57a59,63
> ' 1994-12-26 RS: Modifikationen von Rainer Seitel @ KA
> '                Mindestens folgende Fehler gibt's noch:
> '                In der Resource beim Meneintrag Dateienliste die Punkte weg.
> '                In der Resource bei Dateiinfo Uhrzeit-Feld auf 6 Ziffern. Sonst werden beim Schreiben des Dateiinfo die Sekunden immer auf 0 gesetzt. Auch in PROCEDURE do_datei_info ndern.
> ' 1995-10-20 RS: Letzte nderung.
68c74
< base_look               ! Applikation ?
---
> base_look               ! Applikation?
74c80
<   .|     tz%,status%,seite%,target%,geraet%,block%,dec%,z%,prg_adr%,lern%,ch%
---
>   .|     tz%,status%,seite%,target%,geraet%,block%,dec%,z%,prg_adr%,lern%,ch%,old_ch%
78c84
<   .|     txt_spalte%,buf_end%,beg_ascii%,minad%,maxad%,format_time_out%,drive%
---
>   .|     txt_spalte%,buf_end%,beg_ascii%,minad%,maxad%,format_time_out%,dos_version&,dos_max_sektors%,drive%
80c86
<   .|     fg$,wa$,sys_base%,romstart%,rom_version%,ram_max%,scsi_errmax%
---
>   .|     fg$,wa$,sys_base%,tos_start%,tos_version&,ram_max%,scsi_errmax%
84c90
<   .|     bt$(),bz$(),t_a%(),whdl&(),wnr%(),wz%(),wc%(),tx%(),ty%(),l_end%()
---
>   .|     bt$(),bz$(),t_a%(),whdl&(),wz%(),wc%(),tx%(),ty%(),l_end%()
91c97
<   max_err%=200          ! Maximale Fehler- oder Mitteilungen
---
>   max_err%=200          ! Maximale Anzahl Fehler oder Mitteilungen
100c106,107
<   DIM pfad$(50),scr%(5),mem%(5),par%(8),fe%(15,4),wi%(15,4),men_ienable%(70)
---
>   ' Anzahl der Fenster - 1:                 v        v
>   DIM pfad$(50),scr%(5),mem%(5),par%(8),fe%(1,4),wi%(1,4),men_ienable%(70)
104,105c111,112
<   '     frs 2.Fenster
<   DIM whdl&(15),wnr%(15),wz%(15),wc%(15),tx%(15),ty%(15),l_end%(15),w_titel%(1)
---
>   '     frs 2. Fenster
>   DIM whdl&(1),wz%(1),wc%(1),tx%(1),ty%(1),l_end%(1),w_titel%(1)  ! Anzahl der Fenster - 1
118c125
<     byt_sec%(i&-7)=2^i&         ! FDC (WD 1772) Sektorlngen 128,256,512,1024
---
>     byt_sec%(i&-7)=SHL(1,i&)    ! FDC (WD 1772) Sektorlngen 128, 256, 512, 1024
127,128c134,135
<   rate%(5)=3                    ! A=3msec
<   rate%(6)=0                    ! B=6msec
---
>   rate%(5)=3                    ! A = 3 ms
>   rate%(6)=0                    ! B = 6 ms
174c181
<   CLR prg_adr%,lern%,ch%,cvisible%,menu_pointer%,txt_zeile%,txt_links%,last%
---
>   CLR prg_adr%,lern%,ch%,old_ch%,cvisible%,menu_pointer%,txt_zeile%,txt_links%,last%
191c198
<   itar%=15              ! Target des Initiators(TT)
---
>   itar%=15              ! Target des Initiators (TT)
211c218
<   minad%=0              ! 1.Zeichen im Font
---
>   minad%=0              ! 1. Zeichen im Font
221a229,234
>   dos_version&=ROR&(GEMDOS(48),8)
>   IF dos_version&<&H15 THEN
>     dos_max_sektors%=32767      ! grte Anzahl Sektoren vor GEMDOS 0.15
>   ELSE
>     dos_max_sektors%=65535      ! grte Anzahl Sektoren ab GEMDOS 0.15 (TOS 1.04)
>   ENDIF
230c243
<   rsc$=pfad$+ver$+".RSC"        ! RSC -Datei
---
>   rsc$=pfad$+ver$+".RSC"        ! RSC-Datei
237,238c250,251
<   fg$="?VDx."                   ! Fr Anzeige in FAT-GRAPH
<   ' ? = verklebt, V = Verwaltung, x=Leiche, D = defekt, . = frei
---
>   fg$="?VDX."                   ! Fr Anzeige in FAT-GRAPH
>   ' ? = verklebt, V = Verwaltung, X = Leiche, D = defekt, . = frei
243,244c256,257
<   romstart%=LPEEK(sys_base%+8)
<   rom_version%=DPEEK(sys_base%+2)
---
>   tos_start%=LONG{sys_base%+8}
>   tos_version&=CARD{sys_base%+2}
257c270
<   DATA OK,Fehler beim Selectieren,Defaultfehler (Chaos),ungltige Phase
---
>   DATA OK,Fehler beim Selektieren,Defaultfehler (Chaos),ungltige Phase
273c286
<   .| Glob. Var.: rsc$,pfad$,ver$,appl_id%,graf_handle%,z.b%,z.h%,dum%,hbox%
---
>   .| Glob. Var.: rsc$,pfad$,ver$,appl_id%,aes_version&,graf_handle%,z.b%,z.h%,dum%,hbox%
292c305
<     FILESELECT #"Suche '"+ver$+".RSC'",pfad$+"*.RSC",a$,rsc$
---
>     rsc$=@fsel_input$("Suche '"+ver$+".RSC'",pfad$+"*.RSC",a$)
303a317
>     aes_version&=CARD{LONG{GB+4}}
346a361,372
>     '
>     IF aes_version&>=&H400 OR APPL_FIND("?AGI")>=0
>       GINTIN(0)=10
>       GCONTRL(0)=130    ! APPL_GETINFO
>       GCONTRL(1)=1
>       GCONTRL(2)=5
>       GCONTRL(3)=0
>       GEMSYS
>       IF GINTOUT(0)<>0 AND BYTE(GINTOUT(1))>=9
>         ~SHEL_WRITE(9,1,0,"","")  ! SED versteht AP_TERM
>       ENDIF
>     ENDIF
372,373c398,399
<   tt%=@search_cookie("_MCH",0)  ! ersatz fr  TT?
<   tt!=(tt% DIV 65536) AND 2
---
>   tt%=@search_cookie("_MCH",0)  ! Ersatz fr "TT?"
>   tt!=(tt% DIV 65536)>2
391c417
<   '           Einstellungen die der SED speichert, im RSC setzen
---
>   '           Einstellungen, die der SED speichert, in der RSC setzen
425c451
<   a&=OB_Y(a.lert%,alrti1&)              ! Y-POS ICON 2-5  = Y-POS ICON 1 !
---
>   a&=OB_Y(a.lert%,alrti1&)              ! y-Pos ICON 2-5  = y-Pos ICON 1 !
428c454
<     OB_Y(a.lert%,i&)=a&                 ! Y-Pos
---
>     OB_Y(a.lert%,i&)=a&                 ! y-Pos
470c496
<   LOCAL a$
---
>   ' LOCAL a$
474c500
<     '    ~@alrt(5,ver$+a$,1,"Alles klar")
---
>     ' ~@alrt(5,ver$+a$,1,"Alles klar")
478,479c504,505
<   IF chk_ofls%=0
<     ~@alrt(3,"Offene Dateien knnen nicht erkannt werden!|Das kann zu Datenverlust fhren!|Bitte CHK_OFLS installieren !",1,"Verstanden")
---
>   IF chk_ofls%=0 AND GEMDOS(309,1,32)=-32  ! Dlock(sperren, ungltiges Laufwerk) = EINVFN
>     ~@alrt(3,"Offene Dateien knnen nicht erkannt werden!|Das kann zu Datenverlust fhren!|Bitte CHK_OFLS installieren!",1,"Verstanden")
482c508
< PROCEDURE chk_ofls    ! Datei_offen_berwacher installiert?
---
> PROCEDURE chk_ofls      ! Datei-offen-berwacher installiert?
501c527
<   LOCAL i%
---
>   LOCAL i%,fehler%
505,506c531,532
<   FOR i%=0 TO 25
<     IF (drv_map% AND 2^i%)<>0
---
>   FOR i%=0 TO 31
>     IF (drv_map% AND SHL(1,i%))<>0
508c534
<         RETURN -1
---
>         fehler%=-1
512c538
<   RETURN 0
---
>   RETURN fehler%
517c543
< ' Programmen geffnet ist. Dazu wird CHKOFLS bentigt.
---
> ' Programmen geffnet ist. Dazu wird CHK_OFLS bentigt.
519,520c545
< ' BUG: Fr den Betrieb unter MiNT/MTOS sollte Dlock() benutzt
< ' werden.
---
> ' BUG: Fr den Betrieb unter MiNT/MTOS sollte Dlock() benutzt werden.
526,532c551,574
<   LOCAL a&
<   file_is_open !           Datei, wenn geffnet, schlieen
<   IF chk_ofls%>0 !         Zeiger auf Struktur "OFLS", ver, data ...
<     a&=@ofls(drv%) !       OFLS lesen
<     IF a&>0 AND a&<>&HFFFF
<       IF @alrt(1,"Achtung: |mglicher Datenverlust!| "+STR$(a&)+" geffnete Datei(en)! ",1,wa$)=2
<         RETURN -1
---
>   LOCAL a&,a$
>   file_is_open           ! Datei, wenn geffnet, schlieen
>   a&=GEMDOS(309,1,drv%)  ! Dlock(sperren)
>   IF a&<>-32
>     IF a&=0
>       ~GEMDOS(309,0,drv%) ! Dlock(freigeben)
>     ELSE
>       IF a&=-46          ! EDRIVE
>         a$="es GEMDOS unbekannt ist!"
>       ELSE IF a&=-58     ! ELOCKED
>         a$="es gesperrt ist!"
>       ELSE
>         a$="Dateien offen sind!"
>       ENDIF
>       ~@alrt(1,"Medienwechsel mit Dlock() auf|Laufwerk "+CHR$(drv%+64)+": nicht mglich,|da "+a$,1,"Abbruch")
>       RETURN -1
>     ENDIF
>   ELSE
>     IF chk_ofls%>0       ! Zeiger auf Struktur "OFLS", ver, data ...
>       a&=@ofls(drv%)     ! OFLS lesen
>       IF a&>0 AND a&<>&HFFFF
>         IF @alrt(1,"Achtung:|Mglicher Datenverlust!|"+STR$(a&)+" geffnete Datei(en)!",1,wa$)=2
>           RETURN -1
>         ENDIF
534a577
>     ~C:utis%(&H100+drv%) ! Medienwechsel auslsen
536d578
<   ~C:utis%(&H100+drv%) !   Medienwechsel auslsen
605c647
< FUNCTION was_ist                        ! Abbruch ?
---
> FUNCTION was_ist                        ! Abbruch?
629,639d670
< FUNCTION term$(a$)                      ! HEX-DEC-BIN wandeln
<   .| Aufruf in : get_val-1,hard_read-3,disc_info-1,fat_bearbeiten-9,
<   IF LEFT$(a$,1)="$"
<     RETURN STR$(VAL("&H"+RIGHT$(a$,LEN(a$)-1)))
<   ELSE
<     IF LEFT$(a$,1)="%"
<       RETURN STR$(VAL("&X"+RIGHT$(a$,LEN(a$)-1)))
<     ENDIF
<   ENDIF
<   RETURN a$
< ENDFUNC
732d762
<   .| Glob. Var.: rom_version%
734c764
<   LOCAL p$,s$,t$
---
>   LOCAL p$,s$,t$,i%
737c767
<   p$=STRING$(128,32)
---
>   p$=STRING$(256,0)
741,748c771,791
<   CARD{GCONTRL}=90
<   CARD{GCONTRL+2}=0
<   CARD{GCONTRL+4}=2
<   CARD{GCONTRL+6}=2
<   CARD{GCONTRL+8}=0
<   {ADDRIN}=VARPTR(p$)
<   {ADDRIN+4}=VARPTR(s$)
<   IF rom_version%>=&H104
---
>   ADDRIN(0)=VARPTR(p$)
>   ADDRIN(1)=VARPTR(s$)
>   IF txt$="" THEN
>     GOTO my_fsel_input_
>   ENDIF
>   IF aes_version&<&H140 OR aes_version&>=&H200 AND aes_version&<&H300
>     IF @search_cookie("FSEL",0)<>0
>       GOTO my_fsel_exinput_
>     ENDIF
>     i%=LPEEK(&HB4)                                 ! Trap-13-Vektor untersuchen
>     WHILE LPEEK(i%-12)=CVL("XBRA")
>       ' Dateiauswahlbox von Martin Patzel, Edison-Utility von Eckard Krajewski
>       IF LPEEK(i%-8)=CVL("FSmp") OR LPEEK(i%-8)=CVL("EUek")
>         GOTO my_fsel_exinput_
>       ENDIF
>       i%=LPEEK(i%-4)
>     WEND
>   my_fsel_input_:
>     GEMSYS 90
>   ELSE
>   my_fsel_exinput_:
750,752c793,798
<     CARD{GCONTRL}=91
<     CARD{GCONTRL+6}=3
<     {ADDRIN+8}=VARPTR(t$)
---
>     ADDRIN(2)=VARPTR(t$)
>     GCONTRL(0)=91
>     GCONTRL(1)=0
>     GCONTRL(2)=2
>     GCONTRL(3)=3
>     GEMSYS
754,755d799
<   GEMSYS
<   '
759c803
<   IF CARD{GINTOUT+2}=1
---
>   IF GINTOUT(1)=1
784c828
<     DO WHILE MID$(info_line$,i%,1)=" " AND i%<LEN(info_line$)      ! <>Space suchen
---
>     DO WHILE MID$(info_line$,i%,1)=" " AND i%<LEN(info_line$)   ! <>Space suchen
793c837
< FUNCTION no_protekt                     ! Schreibschutz hilft nix...
---
> FUNCTION no_protekt                     ! Schreibschutz hilft nix ...
805c849
< ' chk_sum: Berechnet Wortprfsumme des Sektors im Sektorpuffer
---
> ' chk_sum: Berechnet Wortprfsumme der ersten 512 Byte des Sektorpuffers
808c852
<   .| Aufruf in : hard_noboot-1,hard_root-1,boot_sec-1,
---
>   .| Aufruf in : make_part-1,hard_noboot-1,hard_root-1,boot_sec-1,
811,812c855,856
<   FOR i%=0 TO bps%-1 STEP 2
<     ADD j%,CARD{buf%+i%}     ! Alle Worte zusammenzhlen
---
>   FOR i%=0 TO 510 STEP 2
>     ADD j%,CARD{buf%+i%}                ! Alle Worte zusammenzhlen
820c864
< FUNCTION dump_data                      ! DUMP or DATA das ist hier die Frage
---
> FUNCTION dump_data                      ! DUMP or DATA, das ist hier die Frage
835c879
<   IF MID$(chk$,2,1)<>":" !                Laufwerk voranstellen, wenn noch nicht da
---
>   IF MID$(chk$,2,1)<>":"                ! Laufwerk voranstellen, wenn noch nicht da
838,840c882,884
<   IF (ASC(chk$)-65)<>drive% !             Enthlt Pfad das aktuelle Laufwerk?
<     drive%=ASC(chk$)-65 !                 Nein, Laufwerk umstellen
<     boot_sec !                            Bootsektor-Informationen lesen
---
>   IF (ASC(chk$)-65)<>drive%             ! Enthlt Pfad das aktuelle Laufwerk?
>     drive%=ASC(chk$)-65                 ! Nein, Laufwerk umstellen
>     boot_sec                            ! Bootsektor-Informationen lesen
847c891
<   a&=RINSTR(fi$,"\") !                    nach letztem Backslash suchen
---
>   a&=RINSTR(fi$,"\")                    ! nach letztem Backslash suchen
849c893
<     b&=RINSTR(a&-1,fi$,"\") !             noch einen Backslash suchen
---
>     b&=RINSTR(a&-1,fi$,"\")             ! noch einen Backslash suchen
851c895
<   IF a&<>b& AND b&>0 AND a&>0 !           mindestens zwei Slashes sollten's schon sein
---
>   IF a&<>b& AND b&>0 AND a&>0           ! mindestens zwei Slashes sollten's schon sein
908c952
<   .| Ruft auf  : term$,get_char$
---
>   .| Ruft auf  : get_char$
911c955
<   RETURN VAL(@term$(@get_char$(tree%,obj&)))
---
>   RETURN VAL(@get_char$(tree%,obj&))
945,946c989,990
<     bt$(i&)=""                  ! Buttontexte clr
<     bz$(i&)=""                  ! ALERT Texte clr
---
>     bt$(i&)=""                  ! Buttontexte lschen
>     bz$(i&)=""                  ! Alert-Texte lschen
1000c1044
<     OB_Y(a.lert%,i&)=OB_H(a.lert%,0)-z.h%*2             ! Button Y-POS
---
>     OB_Y(a.lert%,i&)=OB_H(a.lert%,0)-z.h%*2             ! Button y-Pos
1013c1057
<   x%=OB_W(a.lert%,0)-(ab%+a%+z.b%*2)    ! 1.Button rechts
---
>   x%=OB_W(a.lert%,0)-(ab%+a%+z.b%*2)    ! 1. Button rechts
1067,1068c1111,1112
<   .| Aufruf in : mc_init-3,chk_ofls-1,ram_cookie-1,temple_disass-1,
<   LOCAL adr%,i|,x%,a$
---
>   .| Aufruf in : mc_init-3,chk_ofls-1,fsel_input-1,ram_cookie-1,temple_disass-1
>   LOCAL adr%,x%,a$
1070c1114
<   a$="    "                     ! Puffer mit vier Zeichen
---
>   a%=CVL(coc$)
1073,1078c1117,1119
<     WHILE LPEEK(adr%)
<       FOR i|=0 TO 3
<         BYTE{V:a$+i|}=BYTE{adr%+i|}
<       NEXT i|
<       x%={adr%+4}
<       IF a$=coc$
---
>     WHILE LONG{adr%}
>       x%=LONG{adr%+4}
>       IF LONG{adr%}=a%
1082c1123
<         out(a$+"  "+HEX$(x%,8))
---
>         out(MKL$(LONG{adr%})+"  $"+HEX$(x%,8)+" "+MKL$(x%))
1172c1213
<   ~@alrt(1,"Das geht nur im Datenfenster!",1,"Aha")
---
>   ~@alrt(1,"Das geht nur im Datenfenster!",1," Aha ")
1176c1217
<   ~@alrt(1,"Das geht nur im Textfenster!",1,"Aha")
---
>   ~@alrt(1,"Das geht nur im Textfenster!",1," Aha ")
1211c1252
<   IF wert&>0                    ! jenach Wert 'OBJ' selectieren oder nicht
---
>   IF wert&>0                    ! je nach Wert 'OBJ' selektieren oder nicht
1438c1479
<         scan%=(key% DIV 256) AND &HFF
---
>         scan%=SHR(key%,8)
1493c1534
<     IF (which& AND 1)>0                         ! TASTE gedrckt
---
>     IF (which& AND 1)<>0                        ! TASTE gedrckt
1498c1539
<       IF (kstate% AND 8)>0
---
>       IF (kstate% AND 8)<>0
1504,1512d1544
<         ELSE
<           kling
<         ENDIF
<       ELSE
<         IF key%>0
<           ~OBJC_EDIT(tree%,edit_obj%,key%,idx&,2,idx&)  ! EDCHAR
<         ENDIF
<         IF (next_obj%<>0) AND ((next_obj%<>edit_obj%) OR (cont&=0))
<           ~OBJC_EDIT(tree%,edit_obj%,0,idx&,3,idx&)     ! EDEND
1514a1547,1552
>       IF key%>0
>         ~OBJC_EDIT(tree%,edit_obj%,key%,idx&,2,idx&)  ! EDCHAR
>       ENDIF
>       IF (next_obj%<>0) AND ((next_obj%<>edit_obj%) OR (cont&=0))
>         ~OBJC_EDIT(tree%,edit_obj%,0,idx&,3,idx&)     ! EDEND
>       ENDIF
1535c1573
<             IF ((mb& AND 2)=2) OR (ks& AND 8)>0
---
>             IF ((mb& AND 2)=2) OR (ks& AND 8)<>0
1579,1587c1617,1624
<   {ADDRIN}=tree%
<   CARD{GCONTRL}=55
<   CARD{GCONTRL+2}=3
<   CARD{GCONTRL+4}=3
<   CARD{GCONTRL+6}=1
<   CARD{GCONTRL+8}=0
<   CARD{GINTIN}=edit_obj&
<   CARD{GINTIN+2}=key&
<   CARD{GINTIN+4}=next_obj&
---
>   ADDRIN(0)=tree%
>   GCONTRL(0)=55
>   GCONTRL(1)=3
>   GCONTRL(2)=3
>   GCONTRL(3)=1
>   GINTIN(0)=edit_obj&
>   GINTIN(1)=key&
>   GINTIN(2)=next_obj&
1589,1591c1626,1628
<   nextone%=CARD{GINTOUT+2}
<   nextkey%=CARD{GINTOUT+4}
<   RETURN CARD{GINTOUT}
---
>   nextone%=GINTOUT(1)
>   nextkey%=GINTOUT(2)
>   RETURN GINTOUT(0)
1612c1649
<     IF (theflag& AND flag&)>0
---
>     IF (theflag& AND flag&)<>0
1615c1652
<     IF (theflag& AND &H20)>0        ! LASTOB
---
>     IF (theflag& AND &H20)<>0       ! LASTOB
1644c1681
<   scan%=(key% DIV 256) AND &HFF
---
>   scan%=SHR(key%,8)
1646c1683
<   IF (kstate% AND 3)>0          ! Shift-Taste
---
>   IF (kstate% AND 3)<>0         ! Shift-Taste
1652c1689
<   IF (kstate% AND 8)>0          ! ALT gedrckt
---
>   IF (kstate% AND 8)<>0         ! ALT gedrckt
1655c1692
<     IF (kstate% AND 4)>0        ! CTRL
---
>     IF (kstate% AND 4)<>0       ! CTRL
2051c2088
<   IF fontnr%<=fonts%+neuefonts%                 ! Font gefunden ?
---
>   IF fontnr%<=fonts%+neuefonts%                 ! Font gefunden?
2053,2055c2090,2092
<     a%=@vst_point(scr_handle%,fontsx%)          ! die Grsse dazu
<     IF a%<>fontsx%                              ! hat geklappt ?
<       ~@alrt(3,"Fontgrsse "+STR$(fontsx%)+" nicht einstellbar!",1,"Aha")
---
>     a%=@vst_point(scr_handle%,fontsx%)          ! die Gre dazu
>     IF a%<>fontsx%                              ! hat geklappt?
>       ~@alrt(3,"Fontgre "+STR$(fontsx%)+" nicht einstellbar!",1,"Aha")
2181c2218
<     '         Op,Strukt,   X-,Y-,Spalten
---
>     '         Op,Strukt,   x-,y-,Spalten
2222c2259
<         ALERT 3,"INF-Datei zu lang|Installiere DEFAULT.INF",1,"Aha",dum%
---
>         ALERT 3,"INF-Datei zu lang!|Installiere DEFAULT.INF.",1," Aha ",dum%
2230c2267
<     ALERT 1,"Installiere DEFAULT.INF",1,"Aha",dum%
---
>     ALERT 1,"Installiere DEFAULT.INF.",1," Aha ",dum%
2276c2313
<   IF (BIOS(10) AND 2^drive%)=0
---
>   IF (BIOS(10) AND SHL(1,drive%))=0
2330c2367
<     fwritec(hdl%,STR$(fe%(1,1)*x%))     ! 2.Fenster
---
>     fwritec(hdl%,STR$(fe%(1,1)*x%))     ! 2. Fenster
2361c2398
<         ~@alrt(5,"Kein Speicher fr HELP",1,"kein|Help")
---
>         ~@alrt(5,"Kein Speicher fr HELP!",1,"kein| Help ")
2368c2405
<       ~@alrt(5,"HELP-Datei zu gross!",1,"Aha")
---
>       ~@alrt(5,"HELP-Datei zu gro!",1," Aha ")
2452c2489
<   CARD{scsi_komm%+8}=bps%       ! Blockgrsse
---
>   CARD{scsi_komm%+8}=bps%       ! Blockgre
2454c2491
<   CARD{scsi_komm%+14}=cbytes%   ! Anzahl der Kommandobytes 6-10-12 ?
---
>   CARD{scsi_komm%+14}=cbytes%   ! Anzahl der Kommandobytes 6-10-12?
2509c2546
<       CARD{scsi_komm%+8}=512      ! Blockgrsse
---
>       CARD{scsi_komm%+8}=512      ! Blockgre
2582c2619
<   ~@alrt(1,"Plattenfehler: |"+STR$(he%)+"  "+a$,1,"Aha")
---
>   ~@alrt(1,"Plattenfehler: |"+STR$(he%)+"  "+a$,1," Aha ")
2587c2624
<   .| Ruft auf  : change,do_input,get_char$,term$,hard_read_sec,do_list
---
>   .| Ruft auf  : change,do_input,get_char$,hard_read_sec,do_list
2601c2638
<             block%=block_marke%-VAL(@term$(b$))
---
>             block%=block_marke%-VAL(b$)
2604c2641
<               block%=block_marke%+VAL(@term$(b$))
---
>               block%=block_marke%+VAL(b$)
2608c2645
<           block%=VAL(@term$(a$))
---
>           block%=VAL(a$)
2668c2705
<       cross_rsc(hd.comm%,hdflag0&+i&,(flg% AND 2^i&))
---
>       cross_rsc(hd.comm%,hdflag0&+i&,(flg% AND SHL(1,i&)))
2677c2714
<       BMOVE buf%,buf2%,bps%
---
>       BMOVE buf%,buf2%,512
2679,2680c2716,2717
<       a$=STRING$(bps%,0)
<       BMOVE V:a$,buf2%,bps%
---
>       a$=STRING$(512,0)
>       BMOVE V:a$,buf2%,512
2688c2725
<         flg%=flg% OR 2^i%
---
>         flg%=flg% OR SHL(1,i%)
2722c2759
<       IF (flg% AND 4)>0       ! Returnpuffer ansehen ?
---
>       IF (flg% AND 4)>0       ! Returnpuffer ansehen?
2773c2810
<       ~@alrt(3,"Das geht im Moment nicht |bei SCSI+VORTEX -Platten",1,"Abbruch")
---
>       ~@alrt(3,"Das geht im Moment nicht|bei SCSI- und VORTEX-Platten.",1,"Abbruch")
2802c2839
< PROCEDURE hard_prot           ! Write protekt Trick
---
> PROCEDURE hard_prot           ! Write-protect-Trick
2811c2848
<     ~@alrt(1,"Diese Option ist nur bei |Adaptec-Controllern (ATARI-Modus) |anwendbar.",1,"Aha")
---
>     ~@alrt(1,"Diese Option ist nur bei|Adaptec-Controllern (ATARI-Modus) |anwendbar.",1," Aha ")
2819c2856
<   wwa%=@alrt(2,"Platte parken ?",0,"Parken|Entpark|Abbruch")
---
>   wwa%=@alrt(2,"Platte parken?",0,"Parken|Entpark|Abbruch")
2879c2916,2917
<       bsl_count%=MIN(5,bsl_count%)
---
>       ' bsl_count%=MIN(5,bsl_count%)
>       bsl_count%=MIN(31,bsl_count%)  !RS: zerstrt nicht mein MS-DOS-Medium
2935c2973
<   get_id(part_oben%)            ! ID's auslesen
---
>   get_id(part_oben%)            ! IDs auslesen
2940c2978
<   yk%=OB_H(p.art%,partsli1&)    ! Y-Koordinate Vater-Objects holen
---
>   yk%=OB_H(p.art%,partsli1&)    ! y-Koordinate Vater-Objects holen
2947,2948c2985,2986
<   OB_Y(p.art%,partsli2&)=c%     ! neue Relative Y-Koordinate des Sliders setzen
<   objc_update(p.art%,partsli1&) ! Neu zeuchnen
---
>   OB_Y(p.art%,partsli2&)=c%     ! neue Relative y-Koordinate des Sliders setzen
>   objc_update(p.art%,partsli1&) ! Neu zeichnen
2954c2992
< PROCEDURE add_size            ! alle Partitionen zusammen zhlen
---
> PROCEDURE add_size            ! alle Partitionen zusammenzhlen
2983,2984c3021,3022
<   my%=MOUSEY
<   get_id(part_oben%)            ! ID's auslesen
---
>   ~GRAF_MKSTATE(dum&,my%,dum&,dum&)
>   get_id(part_oben%)            ! IDs auslesen
2987c3025
<   yvv%=OB_Y(p.art%,1)+OB_Y(p.art%,0)  ! Y-Offset Vater
---
>   yvv%=OB_Y(p.art%,1)+OB_Y(p.art%,0)  ! y-Offset Vater
2990c3028
<   y%=OB_Y(p.art%,partsli2&)     ! Y-Koordinate Sohn-Object
---
>   y%=OB_Y(p.art%,partsli2&)     ! y-Koordinate Sohn-Object
3004c3042
<   OB_Y(p.art%,partsli2&)=np%    ! neue Relative Y-Koordinate des Sliders setzen
---
>   OB_Y(p.art%,partsli2&)=np%    ! neue Relative y-Koordinate des Sliders setzen
3023c3061
<   j&=part_oben%                 ! danach ID's neu setzen
---
>   j&=part_oben%                 ! danach IDs neu setzen
3075c3113
<     CLR s%
---
>     '
3078c3116,3117
<       IF p_size%(i&)<32768 AND p_id$(i&)="BGM"
---
>       ' IF p_size%(i&)<32768 AND p_id$(i&)="BGM"
>       IF p_size%(i&)<=dos_max_sektors% AND p_id$(i&)="BGM"
3081c3120,3121
<       IF p_size%(i&)>32767 AND p_id$(i&)="GEM"
---
>       ' IF p_size%(i&)>32767 AND p_id$(i&)="GEM"
>       IF p_size%(i&)>dos_max_sektors% AND p_id$(i&)="GEM"
3093,3094c3133,3134
<   get_id(part_oben%)            ! ID's auslesen
<   get_value(part_oben%)         ! Grssen auslesen
---
>   get_id(part_oben%)            ! IDs auslesen
>   get_value(part_oben%)         ! Gren auslesen
3144c3184,3185
<         IF p_size%(i%)<32768
---
>         ' IF p_size%(i%)<32768
>         IF p_size%(i%)<=dos_max_sektors%
3159c3200
< PROCEDURE get_id(j%)          ! Partitions ID's auslesen
---
> PROCEDURE get_id(j%)          ! Partitions IDs auslesen
3170c3211
< PROCEDURE get_value(j%)       ! Partitionsgrssen auslesen
---
> PROCEDURE get_value(j%)       ! Partitionsgren auslesen
3186c3227
<   .| Glob. Var.: hi_spc%,boot.raw%,buf%,hi_spt%,hi_dhc%,block%,h_error%,a$
---
>   .| Glob. Var.: hi_spc%,boot.raw%,buf%,hi_spt%,hi_dhc%,block%,h_error%
3189c3230
<   .| Ruft auf  : scsicall,hard_err,clr_part,hard_message
---
>   .| Ruft auf  : scsicall,hard_err,clr_part,hard_message,writeintellong,chk_sum
3191c3232
<   LOCAL bps_2%,i%,j%,lendir%,lenfat%
---
>   LOCAL bps_2%,i%,j%,len_dir%,len_fat%
3192a3234
>   clear_buf(0)                          ! Bootsektor lschen
3194d3235
<   BMOVE boot.raw%,buf%,512              ! BOOT-Programm in Puffer
3197c3238,3241
<   WHILE j%>32767                        ! Logische Sektorgrsse berechnen
---
>   IF j%=dos_max_sektors%+1 THEN         !RS: um die Cluster klein zu halten
>     DEC j%
>   ENDIF
>   WHILE j%>dos_max_sektors%             ! Logische Sektorgre berechnen
3199a3244,3246
>     IF j%=dos_max_sektors%+1 THEN       !RS: um die Cluster klein zu halten
>       DEC j%
>     ENDIF
3202c3249,3253
<   BYTE{buf%+11}=bps_2% MOD 256           ! BPS = log. Sektorgrsse
---
>   LONG{buf%}=&HEB3C9000                 ! INTEL short jump
>   CHAR{buf%+3}="SED56"                  ! Name
>   i%=XBIOS(17)                          ! Random()
>   LONG{buf%+8}=SHL(i%,8)                ! Seriennummer
>   BYTE{buf%+11}=bps_2%                  ! BPS = log. Sektorgre
3204,3211c3255,3261
<   BYTE{buf%+13}=hi_spc%                  ! Sektoren/Cluster
<   BYTE{buf%+14}=1                        ! reserviert
<   BYTE{buf%+15}=0
<   BYTE{buf%+16}=2                        ! Anzahl der FAT's
<   lendir%=MAX(256,bps_2%/32)             ! 256 Eintrge von 512-8192 Byte/Sektor
<   BYTE{buf%+17}=lendir% MOD 256
<   BYTE{buf%+18}=lendir% DIV 256          ! Eintrge im Rootverzeichnis
<   BYTE{buf%+19}=j% MOD 256               ! Anzahl der Sektoren
---
>   BYTE{buf%+13}=hi_spc%                 ! Sektoren/Cluster
>   CARD{buf%+14}=ROL&(1,8)               ! Anzahl reservierter Sektoren
>   BYTE{buf%+16}=2                       ! Anzahl der FATs
>   len_dir%=MAX(256,bps_2%/32)           ! 256 Eintrge von 512-8192 Byte/Sektor
>   BYTE{buf%+17}=len_dir%                ! Eintrge im Wurzelverzeichnis
>   BYTE{buf%+18}=len_dir% DIV 256
>   BYTE{buf%+19}=j%                      ! Anzahl der Sektoren
3213,3222c3263,3295
<   BYTE{buf%+21}=&HF8                     ! MEDIA
<   lenfat%=(j%/bps_2%+1)*hi_spc%/2        ! Gre der Fat
<   BYTE{buf%+22}=lenfat%                  ! Grsse der FAT
<   BYTE{buf%+23}=0
<   BYTE{buf%+24}=hi_spt%                  ! Sektoren pro Track
<   BYTE{buf%+25}=0
<   BYTE{buf%+26}=hi_dhc%                  ! Anzahl der Kpfe
<   BYTE{buf%+27}=0
<   CARD{buf%+28}=0                        ! versteckte Sektoren
<   {buf%+2}=&H53454435                    ! "SED5"
---
>   BYTE{buf%+21}=&HF8                    ! MEDIA
>   '                                       Sektoren je FAT
>   len_fat%=(((((j%-1-len_dir%) DIV hi_spc%)+2)*2)+bps_2%-1) DIV bps_2%
>   IF len_fat%>((((((j%-1-2*(len_fat%-1)-len_dir%) DIV hi_spc%)+2)*2)+bps_2%-1) DIV bps_2%)
>     DEC len_fat%
>   ENDIF
>   CARD{buf%+22}=ROL&(len_fat%,8)        ! Sektoren je FAT
>   CARD{buf%+24}=ROL&(hi_spt%,8)         ! Sektoren pro Track
>   CARD{buf%+26}=ROL&(hi_dhc%,8)         ! Anzahl der Kpfe
>   CARD{buf%+28}=0                       ! versteckte Sektoren
>   ' Erweiterter Bootsektor wie MS-DOS 4
>   ' In spt% und heads% mu die vom PC-Controller simulierte Anzahl stehen!
>   CARD{buf%+&H18}=ROL&(32,8)            ! Sektoren pro Spur (INTEL-Format)
>   CARD{buf%+&H1A}=ROL&(64,8)            ! Kpfe (INTEL-Format)
>   @writeintellong(&H1C,p_start%(m%))    ! versteckte Sektoren (INTEL-Format)
>   IF j%>=65536 THEN
>     BYTE{buf%+&H13}=0                   ! Anzahl der Sektoren
>     BYTE{buf%+&H14}=0
>     @writeintellong(&H20,j%)            ! Anzahl der Sektoren (INTEL-Format)
>   ELSE
>     LONG{buf%+&H20}=0
>   ENDIF
>   BYTE{buf%+&H24}=0                     ! physikalische Laufwerksnummer fr MS-DOS
>   BYTE{buf%+&H25}=0                     ! fr MS-DOS reserviert
>   BYTE{buf%+&H26}=&H29                  ! Kennung fr erweiterten BPB
>   i%=GEMDOS(44)                         ! Tgettime()
>   BYTE{buf%+&H27}=i%                    ! Seriennummer
>   BYTE{buf%+&H28}=SHR(i%,8)
>   i%=GEMDOS(42)                         ! Tgetdate()
>   BYTE{buf%+&H29}=i%                    ! noch Seriennummer
>   BYTE{buf%+&H2A}=SHR(i%,8)
>   CHAR{buf%+&H2B}="           FAT16   " ! Medienname und FAT-Typ
>   CARD{buf%+&H1FE}=&H1235-@chk_sum      ! ungltige Prfsumme fr Atari
3225,3233c3298,3299
<   WHILE bps_2%>0
<     scsicall(10,block%,1,0,buf%,6,2)    ! schreibe Bootsektor
<     hard_err
<     EXIT IF h_error%<>0
<     INC block%                          ! und evtl. Sektoren bis log.SEKTOR 1
<     a$=STRING$(512,0)                   ! lschen
<     BMOVE V:a$,buf%,512
<     SUB bps_2%,512
<   WEND
---
>   scsicall(10,block%,bps_2%/512,0,buf%,6,2)  ! schreibe Bootsektor
>   hard_err
3239d3304
<   CLR a$
3249c3314
<   IF (OB_STATE(p.art%,pcbhd&) AND 1)>0
---
>   IF (OB_STATE(p.art%,pcbhd&) AND 1)<>0
3279c3344
<   LOCAL currblock%,x1%
---
>   LOCAL currblock%
3290c3355
<     IF pfirst%=1                ! ersten ROOT - Sektor schreiben
---
>     IF pfirst%=1                ! ersten ROOT-Sektor schreiben
3371c3436
<   .| Ruft auf  : mdisk,scsicall,readmot,hard_err,hard_message,lesen,do_list
---
>   .| Ruft auf  : mdisk,scsicall,readintelword,hard_err,hard_message,lesen,do_list
3373c3438
<   LOCAL ab%,i%,ph_sektors%,tm%,x1%,a$
---
>   LOCAL ab%,anf_fat1%,len_fat%,i%,ph_sektors%,tm%,x1%
3377,3382c3442
<   bps_2%=@readmot(11)                   ! Bytes pro Sektor !
<   x1%=@readmot(22)*BYTE{buf%+16}+@readmot(17)/16
<   a$=STRING$(bps_2%,0)                  ! Leerstring zum Puffer lschen
<   BMOVE V:a$,buf%,bps_2%                ! String in Buffer
<   CLR a$
<   CLR h_error%
---
>   bps_2%=@readintelword(11)             ! Bytes pro Sektor
3384,3388c3444,3458
<   tm%=MALLOC(x1%*ph_sektors%)
<   ab%=bps_2%/512
<   IF tm%=0 OR x1%*ph_sektors%>127
<     FOR i%=ab% TO ab%+x1%*ph_sektors%-1
<       scsicall(10,block%+i%,1,0,buf%,6,2)     ! FAT+DIR schreiben
---
>   anf_fat1%=@readintelword(14)          ! Anzahl reservierter Sektoren
>   len_fat%=@readintelword(22)
>   x1%=len_fat%*BYTE{buf%+16}+@readintelword(17)*32/bps_2%
>   clear_buf(0)
>   CLR h_error%
>   tm%=MALLOC(x1%*bps_2%)
>   ab%=anf_fat1%*ph_sektors%
>   IF tm%=0
>     FOR i%=ab% TO ab%+x1%*ph_sektors%-1 STEP ph_sektors%
>       IF i% MOD (len_fat%*ph_sektors%) OR i%>ab%+len_fat%*ph_sektors%*BYTE{buf%+16}
>         LONG{buf%}=0
>       ELSE
>         LONG{buf%}=&HF8FFFFFF
>       ENDIF
>       scsicall(10,block%+i%,ph_sektors%,0,buf%,6,2)     ! FAT+DIR schreiben
3393,3394c3463,3464
<     FOR i%=0 TO (x1%*ph_sektors%)-1
<       BMOVE buf%,tm%+i%*bps%,bps%
---
>     FOR i%=0 TO x1%-1
>       BMOVE buf%,tm%+i%*bps_2%,bps_2%
3396,3397c3466,3475
<     scsicall(10,block%+ab%,x1%*ph_sektors%,0,tm%,6,2)
<     hard_err
---
>     FOR i%=0 TO BYTE{buf%+16}-1
>       LONG{tm%+i%*len_fat%*bps_2%}=&HF8FFFFFF
>     NEXT i%
>     WHILE x1%
>       scsicall(10,block%+ab%,MIN(128,x1%*ph_sektors%),0,tm%,6,2)
>       hard_err
>       EXIT IF h_error<>0
>       SUB x1%,128/ph_sektors%
>       ADD ab%,128
>     WEND
3598c3676
<         EXIT IF h_error%<>0             ! Fehler ?
---
>         EXIT IF h_error%<>0             ! Fehler?
3603c3681
<         ab%=BYTE{buf%+1}                ! xx Bytes nach 60xx retten wegen C't
---
>         ab%=BYTE{buf%+1}                ! xx Bytes nach 60xx retten wegen c't
3607c3685
<         BMOVE buf%+2,V:b$,LEN(b$)       ! und gerettete Daten (C't)
---
>         BMOVE buf%+2,V:b$,LEN(b$)       ! und gerettete Daten (c't)
3614c3692
<         CARD{buf%+&H1BC}=hi_wpc%        !   '    '    Vorkompensation
---
>         CARD{buf%+&H1BC}=hi_wpc%        !    "    "   Vorkompensation
3637c3715
<         scsicall(10,0,1,0,buf%,6,2)     ! 1.Rootsektor schreiben
---
>         scsicall(10,0,1,0,buf%,6,2)     ! 1. Rootsektor schreiben
3649c3727
<                 BYTE{buf%+&H1C6}=p_flag%(i%)     ! FLAG schreiben !!
---
>                 BYTE{buf%+&H1C6}=p_flag%(i%)     ! FLAG schreiben!!
3683c3761
<           ~@alrt(1,"Treiber (CBHD.SYS) |bitte selber kopieren",1,"OK")
---
>           ~@alrt(1,"Treiber (CBHD.SYS) |bitte selber kopieren!",1," OK ")
3688c3766
<             x%=BYTE{punptr%+i%+2}
---
>             x%=BYTE{punptr%+i%+2} AND &X11111
3712c3790
<   IF @alrt(2,"Booten von der Platte abstellen ?",1,wa$)=1
---
>   IF @alrt(2,"Booten von der Platte abstellen?",1,wa$)=1
3718c3796
<           ~@alrt(1,"Platte ist nicht bootfhig ",1,"Aha")
---
>           ~@alrt(1,"Platte ist nicht bootfhig!",1," Aha ")
3720c3798
<           CARD{buf%+510}=(chk_sum%-1) AND &HFFFF
---
>           CARD{buf%+510}=chk_sum%-1
3742c3820
<   clr_out("Platten suchen...")
---
>   clr_out("Platten suchen ...")
3747c3825
<         a$="Target:"+RIGHT$("0"+STR$(target%),2)+"  Gert:"+STR$(geraet%)+"  "
---
>         a$="Target: "+RIGHT$("0"+STR$(target%),2)+"  Gert: "+STR$(geraet%)+"  "
3848c3926
<     IF @alrt(1,"HDX-RESTORE|"+STRING$(27,"-")+"  |ACHTUNG: Bootsektoren |werden berschrieben ! ",1,wa$)=1
---
>     IF @alrt(1,"HDX-RESTORE|"+STRING$(27,"-")+"  |ACHTUNG: Bootsektoren|werden berschrieben! ",1,wa$)=1
3866c3944
<             IF @alrt(2,"Rootsektor schreiben ?",0,"Ja|Nein")=1
---
>             IF @alrt(2,"Rootsektor schreiben?",0,"Ja| Nein ")=1
3880c3958
<                   IF @alrt(2,"Rootsektor restaurieren?",0,"Ja|Nein")=1
---
>                   IF @alrt(2,"Rootsektor restaurieren?",0,"Ja| Nein ")=1
3893c3971
<                   erg%=@alrt(2,"Bootsektor "+STR$(i%+1)+" schreiben ?",0,"Ja|Nein|Abbruch")
---
>                   erg%=@alrt(2,"Bootsektor "+STR$(i%+1)+" schreiben?",0,"Ja|Nein|Abbruch")
3922c4000
<       IF @alrt(2,"SCHREIB-TEST  Letzte Chance:|Target:"+STR$(target%)+" Geraet:"+STR$(geraet%)+"| "+platte$,0,wa$)=1
---
>       IF @alrt(2,"SCHREIB-TEST  Letzte Chance:|Target:"+STR$(target%)+" Gert:"+STR$(geraet%)+"| "+platte$,0,wa$)=1
3962c4040
<       put_char(b.ox%,boxtxt&,"Testmuster schreiben...")
---
>       put_char(b.ox%,boxtxt&,"Testmuster schreiben ...")
4033c4111
<                 ~@alrt(1,"Konnte defekten Block nicht lokalisieren",1,"Dumm")
---
>                 ~@alrt(1,"Konnte defekten Block nicht lokalisieren.",1," Dumm ")
4039c4117
<           EXIT IF block%>=hi_size%        ! Fertig ?
---
>           EXIT IF block%>=hi_size%        ! Fertig?
4044c4122
<           EXIT IF @was_ist>0        ! Abbruch ?
---
>           EXIT IF @was_ist>0        ! Abbruch?
4054,4056c4132
<       BYTE{V:bsl$}=(bad% AND &HFF0000)/65536
<       BYTE{V:bsl$+1}=(bad% AND &HFF00)/256
<       BYTE{V:bsl$+2}=(bad% AND &HFF)      ! Anzahl der Defekte
---
>       LONG{V:bsl$}=SHL(bad%,8)            ! Anzahl der Defekte
4059,4060c4135,4136
<       FOR i%=0 TO bad%+2*3
<         ADD s%,BYTE{(V:bsl$)+i%}
---
>       FOR i%=V:bsl$ TO V:bsl$+bad%*3+5
>         ADD s%,BYTE{i%}
4093c4169
<     out("Block:"+STR$(nr%)+" defekt...")
---
>     out("Block "+STR$(nr%)+" defekt ...")
4107c4183
<   IF @alrt(2,"BAD-SEKTOR-LIST abarbeiten?|Start:"+STR$(bsl_start%)+"|Lnge:"+STR$(bsl_count%),1,wa$)=1
---
>   IF @alrt(2,"BAD-SEKTOR-LIST abarbeiten?|Start: "+STR$(bsl_start%)+"|Lnge: "+STR$(bsl_count%),1,wa$)=1
4115c4191
<   LOCAL h_def%,si%,j%,zgr%,bsl$
---
>   LOCAL h_def%,block%,j%,zgr%,bsl$
4120,4122c4196,4198
<     FOR si%=bsl_start% TO bsl_start%+bsl_count%-1
<       EXIT IF si%>hi_size%
<       scsicall(8,si%,1,0,buf%,6,4)       ! X.BSL-Block lesen
---
>     FOR block%=bsl_start% TO bsl_start%+bsl_count%-1
>       EXIT IF block%>hi_size%
>       scsicall(8,block%,1,0,buf%,6,4)       ! x. BSL-Block lesen
4127c4203
<       IF si%=bsl_start%
---
>       IF block%=bsl_start%
4136c4212
<         out("Block:"+STR$(block%))
---
>         out("Block: "+STR$(block%))
4149c4225
<     NEXT si%
---
>     NEXT block%
4150a4227,4275
>   do_mark_bad_cluster
> RETURN
> ' Cluster mit dem Vorzeichenfehler-Sektor in der FAT als defekt eintragen.
> PROCEDURE do_mark_bad_cluster
>   .| Glob. Var.: part_total%,buf%,h_error%,abb%
>   .| Felder    : p_start%()
>   .| Ruft auf  : scsicall,hard_err,readintelword
>   .| Aufruf in : hard_set_bad-1,
>   LOCAL a%,part%,bps_2%,phs_p_ls%,fat_anz%
>   LOCAL anf_fat1%,len_fat%,cluster%,x%
>   '
>   FOR part%=0 TO part_total%-1
>     scsicall(8,p_start%(part%),1,0,buf%,6,4)    ! Bootsektor lesen
>     hard_err
>     IF h_error%=0
>       bps_2%=@readintelword(11)
>       anf_fat1%=@readintelword(14)              ! Anzahl reservierter Sektoren
>       len_fat%=@readintelword(22)
>       fat_anz%=BYTE{buf%+16}
>       phs_p_ls%=bps_2%/512                      ! physikalische Sektoren pro logischem Sektor
>       '
>       ' Existiert der gefhrdete Datensektor? (Partitionen ab 65536 Sektoren sind nicht betroffen!)
>       IF @readintelword(19)-anf_fat1%+len_fat%*fat_anz%+@readintelword(17)*32/bps_2%>&H3FFF
>         cluster%=&H7FFF DIV BYTE{buf%+13}       ! betroffen ist $7FFF/SpC
>         block%=anf_fat1%*phs_p_ls%+cluster%*2/512
>         ADD block%,p_start%(part%)
>         '
>         scsicall(8,block%,1,0,buf%,6,4)         ! FAT-Sektor lesen
>         hard_err
>         IF h_error%=0
>           a%=cluster%*2 MOD 512
>           BYTE{buf%+a%}=&HF7FF                  ! $FFF7 = defekt
>           scsicall(10,block%,1,0,buf%,6,2)      ! FAT-Sektor schreiben
>           hard_err
>           x%=len_fat%
>           WHILE fat_anz%>1
>             scsicall(10,block%+x%*phs_p_ls%,1,0,buf%,6,2) ! x. FAT schreiben
>             hard_err
>             EXIT IF h_error%<>0
>             ADD x%,len_fat%
>             DEC fat_anz%
>           WEND
>         ENDIF
>       ENDIF
>     ENDIF
>     IF h_error%<>0
>       abb%=1
>     ENDIF
>   NEXT part%
4155c4280
<   .| Ruft auf  : scsicall,hard_err,readintel,alrt,lesen
---
>   .| Ruft auf  : scsicall,hard_err,readintelword,alrt,lesen
4157,4158c4282,4283
<   LOCAL a%,bl%,part%,hbps%,anf_dat%,ph_sp_ls%,fat_anz%
<   LOCAL len_dir%,len_fat%,anf_fat1%,spc%,lgs%,cluster%,x%
---
>   LOCAL a%,part%,bps_2%,anf_dat%,phs_p_ls%,fat_anz%
>   LOCAL anf_fat1%,len_dir%,len_fat%,spc%,lgs%,cluster%,x%
4172c4297
<       hbps%=@readintel(12)
---
>       bps_2%=@readintelword(11)
4174,4176c4299,4301
<       len_dir%=@readintel(18)*32/hbps%
<       len_fat%=@readintel(23)
<       anf_fat1%=@readintel(29)
---
>       anf_fat1%=@readintelword(14)              ! Anzahl reservierter Sektoren
>       len_dir%=@readintelword(17)*32/bps_2%
>       len_fat%=@readintelword(22)
4178c4303
<       ph_sp_ls%=hbps%/512                       ! physikalische Sektoren pro logischem Sektor
---
>       phs_p_ls%=bps_2%/512                      ! physikalische Sektoren pro logischem Sektor
4181c4306
<       anf_dat%=1+len_fat%*2+len_dir%
---
>       anf_dat%=anf_fat1%+len_fat%*fat_anz%+len_dir%
4183c4308
<       block%=cluster%*2/512+ph_sp_ls%
---
>       block%=anf_fat1%*phs_p_ls%+cluster%*2/512
4190,4191c4315,4316
<         WHILE a%>=hbps%
<           SUB a%,hbps%
---
>         WHILE a%>=512
>           SUB a%,512
4193,4194c4318
<         BYTE{buf%+a%}=(&HFFF7 AND &HFF)          ! &HFFF7 = defekt
<         BYTE{buf%+a%+1}=(&HFFF7 AND &HFF00)/256
---
>         CARD{buf%+a%}=&HF7FF                    ! $FFF7 = defekt
4198,4199c4322,4323
<         WHILE fat_anz%>0
<           scsicall(10,block%+x%*ph_sp_ls%,1,0,buf%,6,2) ! x.FAT schreiben
---
>         WHILE fat_anz%>1
>           scsicall(10,block%+x%*phs_p_ls%,1,0,buf%,6,2) ! x. FAT schreiben
4208c4332
<     ~@alrt(1,"Block:"+STR$(block%)+" nicht gefunden!",1,"Abbruch")
---
>     ~@alrt(1,"Block "+STR$(block%)+" nicht gefunden!",1,"Abbruch")
4215c4339
< FUNCTION check_bsl            ! BSl-Struktur testen
---
> FUNCTION check_bsl            ! BSL-Struktur testen
4223c4347
<   IF bsl%>0 AND bsl_count%<5 AND bsl_start%<5
---
>   IF bsl%>0 AND bsl_count%<32 AND bsl_start%<5
4232c4356
<         ~@alrt(3,"BSL-Prfsumme falsch!|Evtl. neu Formatieren.",1,"Aha")
---
>         ~@alrt(3,"BSL-Prfsumme falsch!|Evtl. neu Formatieren.",1," Aha ")
4237d4360
<     ~MFREE(bsl%)
4240a4364
>   ~MFREE(bsl%)
4250c4374
<   LOCAL i%,a$
---
>   LOCAL hi_size
4257c4381
<     hi_bps%=BYTE{buf2%+9}*65536+BYTE{buf2%+10}*256+BYTE{buf2%+11}
---
>     hi_bps%=LONG{buf2%+8} AND &HFFFFFF
4265c4389,4390
<     hi_size%=hi_cc%*hi_dhc%*hi_spt%
---
>     hi_size=ABS(hi_cc%*hi_dhc%*hi_spt%)
>     hi_size%=MIN(&H7FFFFFFF,hi_size)
4269c4394
<       hi_size%=BYTE{buf2%+5}*65536+BYTE{buf2%+6}*256+BYTE{buf2%+7}
---
>       hi_size%=LONG{buf2%+4} AND &HFFFFFF
4276d4400
<       scsicall(26,3*256,36,0,buf%,6,5)  ! Mode Sense Page 3
4278,4279c4402,4406
<       hi_bps%=BYTE{buf2%+9}*65536+BYTE{buf2%+10}*256+BYTE{buf2%+11}
<       hi_spt%=BYTE{buf2%+22}*256+BYTE{buf2%+23}
---
>       scsicall(26,3*256,36,0,buf%,6,5)  ! Mode Sense Page 3
>       IF hi_bps%=0
>         hi_bps%=LONG{buf2%+8} AND &HFFFFFF
>       ENDIF
>       hi_spt%=CARD{buf2%+22}
4288c4415
<       hi_in%=BYTE{buf2%+26}*256+BYTE{buf2%+27}
---
>       hi_in%=CARD{buf2%+26}
4290a4418,4425
>       '
>       IF hi_bps%=0                      ! CD-ROM
>         scsicall(26,1*256,36,0,buf%,6,5)  ! Mode Sense Page 1
>         hi_bps%=LONG{buf2%+8} AND &HFFFFFF
>       ENDIF
>       IF hi_size%=0                     ! CD-ROM
>         hi_size%=@hard_test_big
>       ENDIF
4339c4474
<       hi_size%=MIN(2147483647,hi_cc%*hi_dhc%*hi_spt%)
---
>       hi_size%=hi_cc%*hi_dhc%*hi_spt%
4353,4355c4488,4489
<       BYTE{buf2%+9}=(bps% AND &HFF0000) DIV 65536  ! Sektorgre high
<       BYTE{buf2%+10}=(bps% AND &HFF00) DIV 256     !   '     '   mid
<       BYTE{buf2%+11}=(bps% AND &HFF)               !   '     '   low
---
>       BYTE{buf2%+9}=SHR(bps%,16)           ! Sektorgre high
>       CARD{buf2%+10}=bps%                  !      "       mid, low
4358c4492
<       BYTE{buf2%+14}=hi_cc% MOD 256
---
>       BYTE{buf2%+14}=hi_cc%
4360,4363c4494,4495
<       BYTE{buf2%+16}=hi_rwcc% DIV 256      ! Reduzierter Schreibstrom
<       BYTE{buf2%+17}=hi_rwcc% MOD 256      ! ab Zylinder Hi_rwcc
<       BYTE{buf2%+18}=hi_wpc% DIV 256       ! Vorkompensation ab
<       BYTE{buf2%+19}=hi_wpc% MOD 256       ! Zylinder Hi_wpc
---
>       CARD{buf2%+16}=hi_rwcc%              ! Reduzierter Schreibstrom ab Zylinder Hi_rwcc
>       CARD{buf2%+18}=hi_wpc%               ! Vorkompensation ab Zylinder Hi_wpc
4366c4498
<       CARD{buf2%+22}=hi_spt%               ! Sektoren pro Track
---
>       BYTE{buf2%+23}=hi_spt%               ! Sektoren pro Track
4451c4583
<       IF (OB_STATE(t.arget%,i&) AND 1)>0
---
>       IF (OB_STATE(t.arget%,i&) AND 1)<>0
4456c4588
<       IF (OB_STATE(t.arget%,i&) AND 1)>0
---
>       IF (OB_STATE(t.arget%,i&) AND 1)<>0
4465c4597
<   .| Glob. Var.: t.arget%,tgwahl&,t0&,tt!
---
>   .| Glob. Var.: t.arget%,tgwahl&,t0&,t15&,tt!
4470,4471c4602,4603
<   IF (OB_STATE(t.arget%,tgwahl&) AND 1)>0
<     FOR i&=t0& TO t0&+15
---
>   IF (OB_STATE(t.arget%,tgwahl&) AND 1)<>0
>     FOR i&=t0& TO t15&
4477,4483c4609,4617
<     FOR i&=0 TO 15+8*(tt!=0)
<       x&=BYTE{punptr%+i&+2}
<       IF x&<>&HFF AND punptr%>0
<         clr_state(t.arget%,x&+t0&,8) ! enable
<         set_flags(t.arget%,x&+t0&,1) ! selectable
<       ENDIF
<     NEXT i&
---
>     IF punptr%
>       FOR i&=0 TO 15
>         x&=BYTE{punptr%+i&+2}
>         IF x&<>&HFF AND (x& AND &X11111)<16  ! nur ACSI und SCSI
>           clr_state(t.arget%,x&+t0&,8) ! enable
>           set_flags(t.arget%,x&+t0&,1) ! selectable
>         ENDIF
>       NEXT i&
>     ENDIF
4514c4648
<   LOCAL a,a%,b%,x%,a$,b$
---
>   LOCAL a%,b%,a$,b$
4520a4655,4656
>     a%=bps%     !RS: INQUIRY funktioniert bei CD-ROM nur mit bps% = 512!?
>     bps%=512    !RS:
4522c4658,4679
<     '
---
>     bps%=a%     !RS:
>     SELECT BYTE{buf2%}
>     CASE 0
>       IF BTST(BYTE{buf2%+1},7)
>         a$="Wechselplatte"
>       ELSE
>         a$="Festplatte"
>       ENDIF
>     CASE 1
>       a$="Bandlaufwerk"
>     CASE 2
>       a$="Drucker"
>     CASE 3
>       a$="Prozessor"
>     CASE 4
>       a$="einmal beschreibbares Medium"
>     CASE 5
>       a$="CD-ROM"
>     DEFAULT
>       a$="unbekannt"
>     ENDSELECT
>     out("Gertetyp    : "+a$)
4529,4531c4686,4688
<     out("SCSI-Version : "+STR$(BYTE{buf2%+2}))
<     a$=STRING$(3,0)
<     BMOVE buf2%+32,VARPTR(a$),3
---
>     out("SCSI-Version : ANSI: "+STR$(BYTE{buf2%+2} AND 7)+", ECMA: "+STR$(SHR|(BYTE{buf2%+2},3) AND 7)+", ISO: "+STR$(SHR|(BYTE{buf2%+2},6)))
>     a$=STRING$(4,0)
>     BMOVE buf2%+32,VARPTR(a$),4
4533c4690
<     IF INSTR(b$,"SQ555")        ! Wechselmedium ?
---
>     IF INSTR(b$,"SQ555") OR INSTR(b$,"SQ5110") OR INSTR(b$,"SQ5200") OR INSTR(b$,"SQ3105") OR INSTR(b$,"SQ3270")  ! SyQuest-Wechselmedium?
4537a4695,4699
>     IF INSTR(b$,"CD-ROM XM-")  ! Toshiba CD-ROM?
>       a$=STRING$(8,0)
>       BMOVE buf2%+36,V:a$,8
>       out("Datum        : "+a$)
>     ENDIF
4551,4554c4713,4714
<     x%=@hard_test_big
<     IF x%>0
<       a%=x%
<       b%=bps%
---
>     a%=@hard_test_big
>     IF a%>0
4556,4557c4716,4717
<       a$=STR$(a%)+" Blcke zu "+STR$(b%)+" Bytes"
<       out(a$+" = "+@runden$(a%*b%/1048576)+" MB")
---
>       a$=STR$(a%)+" Blcke zu "+STR$(bps%)+" Bytes"
>       out(a$+" = "+@runden$(a%*bps%/1048576)+" MB")
4629c4789
<   LOCAL x1%,i%,hi_size
---
>   LOCAL i%,hi_size
4760c4920
<     out("Anzahl Blcke gesamt  : "+STR$(hi_size%)+" = "+@runden$(hi_size%/2048)+" MByte")
---
>     out("Anzahl Blcke gesamt  : "+STR$(hi_size%)+" = "+@runden$(hi_size%*bps%/1048576)+" MByte")
4796c4956
<     IF (p_flag%(i%) AND 1)>0
---
>     IF (p_flag%(i%) AND 1)<>0
4799c4959
<     IF (p_flag%(i%) AND &H80)>0
---
>     IF (p_flag%(i%) AND &H80)<>0
4831,4832c4991,4992
<   ~@alrt(1,"..... geht nicht bei|'VORTEX' ",1,"Warum")
<   ~@alrt(1,"Weiss nicht warum -|Vortex fragen",1,"Darum")
---
>   ~@alrt(1,"... geht nicht bei|'VORTEX'! ",1,"Warum?")
>   ~@alrt(1,"Wei nicht warum -|Vortex fragen!",1,"Darum")
4848c5008
<           qblock%=@eingabe("1.Blocknummer auf Quell"+a$,0)
---
>           qblock%=@eingabe("1. Blocknummer auf Quell"+a$,0)
5031c5191
<   ~@alrt(1,"Anzahl der gelesenen Bytes !",1,"Aha")
---
>   ~@alrt(1,"Anzahl der gelesenen Bytes!",1," Aha ")
5065c5225
<     UNTIL (PEEK(mfp%) AND 32)=0         ! Dann Start !!
---
>     UNTIL (PEEK(mfp%) AND 32)=0         ! Dann Start!!
5105c5265
<   rateb%=(a% AND &HFF0000)/&H10000
---
>   rateb%=SHR(a%,16)
5135c5295
<     IF (OB_STATE(step.rate%,i&) AND 1)>0
---
>     IF (OB_STATE(step.rate%,i&) AND 1)<>0
5141c5301
<     IF (OB_STATE(step.rate%,i&) AND 1)>0
---
>     IF (OB_STATE(step.rate%,i&) AND 1)<>0
5146c5306
<   IF (OB_STATE(step.rate%,stepresi&) AND 1)>0
---
>   IF (OB_STATE(step.rate%,stepresi&) AND 1)<>0
5149c5309
<   IF (OB_STATE(step.rate%,stephd&) AND 1)>0
---
>   IF (OB_STATE(step.rate%,stephd&) AND 1)<>0
5166c5326
<     read_adr_feld(100)     ! max. 100 Sektoren ??
---
>     read_adr_feld(100)     ! max. 100 Sektoren??
5275c5435
<         BYTE{zg%+7}=sc%                         ! Sektorgrsse
---
>         BYTE{zg%+7}=sc%                         ! Sektorgre
5339c5499
<     l1%=@eingabe("Wieviel Bytes lesen",514)
---
>     l1%=@eingabe("Wieviele Bytes lesen",514)
5363c5523
<     l1%=@eingabe("Wieviel Bytes schreiben",529)
---
>     l1%=@eingabe("Wieviele Bytes schreiben",529)
5481c5641
<     BMOVE VARPTR(an$),ak%,trk_len_max%          ! Status lschen ??
---
>     BMOVE VARPTR(an$),ak%,trk_len_max%          ! Status lschen??
5485c5645
<       wwa%=@alrt(2,"   Track 41 ?     ",1,"Gap|Anal")
---
>       wwa%=@alrt(2,"   Track 41?     ",1,"Gap|Anal")
5511c5671
<     BMOVE VARPTR(an$),ak%,trk_len_max%          ! Status lschen ??
---
>     BMOVE VARPTR(an$),ak%,trk_len_max%          ! Status lschen??
5516c5676
<     ~@alrt(1,"Keine Diskette drin oder was ?",1,"Kann sein")
---
>     ~@alrt(1,"Keine Diskette drin oder was?",1,"Kann sein")
5548c5708
<       EXIT IF track%>=tpd%            ! Fertig ?
---
>       EXIT IF track%>=tpd%            ! Fertig?
5577,5578c5737,5738
<   IF @alrt(2,"   Achtung! Diskette wird   |   gelscht !! ",2,wa$)=1
<     a%=@eingabe("Wieviel Spuren lschen",80)
---
>   IF @alrt(2,"   Achtung! Diskette wird   |   gelscht!!",2,wa$)=1
>     a%=@eingabe("Wieviele Spuren lschen",80)
5582c5742
<       wwa%=@alrt(2,"    Was schreiben ??    ",1,"Puffer|Muster|Abbruch")
---
>       wwa%=@alrt(2,"    Was schreiben?    ",1,"Puffer|Muster|Abbruch")
5730c5890
<       IF BYTE{fdc1%+scz%+4}+BYTE{fdc1%+scz%+5}=0 ! Adressfeld_status
---
>       IF BYTE{fdc1%+scz%+4}+BYTE{fdc1%+scz%+5}=0  ! Adrefeldstatus
5788c5948
<     IF sek%(sec_anz%,5)>a1%     ! war im Sektor ein neuer Header ?
---
>     IF sek%(sec_anz%,5)>a1%     ! war im Sektor ein neuer Header?
5852c6012
<   IF sek%(sec_anz%,5)>a1%       ! war im letzten Sektor ein neuer Header ?
---
>   IF sek%(sec_anz%,5)>a1%       ! war im letzten Sektor ein neuer Header?
5858c6018
<     sek%(sec_anz%,9)=(sec_end%-sek%(sec_anz%,4))-1    ! Sektorlnge ??
---
>     sek%(sec_anz%,9)=(sec_end%-sek%(sec_anz%,4))-1    ! Sektorlnge??
5905c6065
<   IF snr%>22                    ! Sektornummer  ?
---
>   IF snr%>22                    ! Sektornummer?
6002c6162
<     ~@alrt(1,"Nur beim ATARI-TT mglich",1,"Aha")
---
>     ~@alrt(1,"Nur beim ATARI TT mglich!",1," Aha ")
6007c6167
<   .| Glob. Var.: rom_version%
---
>   .| Glob. Var.: tos_version&
6020c6180
<   IF rom_version%>=&H104
---
>   IF tos_version&>=&H104
6025c6185
<     IF rom_version%=&H100
---
>     IF tos_version&=&H100
6083c6243
<   a%=@eingabe("RAM schreiben ab Adresse :",ram_addr%)
---
>   a%=@eingabe("RAM schreiben ab Adresse:",ram_addr%)
6093c6253
<   bc%=@eingabe("Ab Adresse :",ram_addr%)
---
>   bc%=@eingabe("Ab Adresse:",ram_addr%)
6095c6255
<     a%=@eingabe("bis Adresse :",0)
---
>     a%=@eingabe("bis Adresse:",0)
6098c6258
<         INC a%                  ! darf nicht ungerade Anzahl sein ?
---
>         INC a%                  ! darf nicht ungerade Anzahl sein?
6109c6269
<               ~@alrt(3,"Busfehler aufgetreten!",1,"Aha")
---
>               ~@alrt(3,"Busfehler aufgetreten!",1," Aha ")
6120c6280
<               ~@alrt(3,"Busfehler aufgetreten!",1,"Aha")
---
>               ~@alrt(3,"Busfehler aufgetreten!",1," Aha ")
6145c6305
<       a%=@eingabe("Wieviele Bytes einlesen ?",rfl%)
---
>       a%=@eingabe("Wieviele Bytes einlesen?",rfl%)
6146a6307
>         a%=MIN(rfl%,a%)
6148c6309
<           FOR t%=ram_addr%+tz% TO ram_addr%+tz%+MIN(rfl%,a%)-1
---
>           FOR t%=ram_addr%+tz% TO ram_addr%+tz%+a%-1
6152c6313,6316
<           fread2(fhandle%,buf%+tz%,MIN(rfl%,a%))
---
>           IF tz%+a%>init_mem%
>             a%=init_mem%-tz%
>           ENDIF
>           fread2(fhandle%,buf%+tz%,a%)
6164c6328
<     IF @alrt(2,RIGHT$(prg_fi$,40)+"|ab Adresse "+@dec_hex_val$(prg_adr%,8)+"|ist noch im Speicher.|Freigeben?",1,"Ok|Nein")=1
---
>     IF @alrt(2,RIGHT$(prg_fi$,40)+"|ab Adresse "+@dec_hex_val$(prg_adr%,8)+"|ist noch im Speicher.|Freigeben?",1,"Ok| Nein ")=1
6178c6342
<         ~@alrt(3,"Kein Speicher frei|oder anderer Fehler ",1,"Abbruch")
---
>         ~@alrt(3,"Kein Speicher frei|oder anderer Fehler. ",1,"Abbruch")
6189c6353,6354
<     IF @alrt(2,"Geladenes Programm belegt|noch Speicher.|Freigeben?",1,"Ok|Nein")=1
---
>     IF @alrt(2,"Geladenes Programm belegt|noch Speicher.|Freigeben?",1,"Ok| Nein ")=1
>       ~MFREE(LONG{prg_adr%+&H2C})  ! Environment
6194c6359
<     ~@alrt(3,"Kein Programm geladen",1,"Aha")
---
>     ~@alrt(3,"Kein Programm geladen.",1," Aha ")
6238,6239c6403,6404
<     max%=GEMDOS(72,L:-1,0)
<     adr%=GEMDOS(72,L:max%,0)    ! 0=nur ST-RAM
---
>     max%=MALLOC(-1)
>     adr%=MALLOC(max%)           ! nur ST-RAM
6247,6249c6412
<     IF adr%>0
<       ~MFREE(adr%)
<     ENDIF
---
>     ~MFREE(adr%)
6318a6482,6488
> FUNCTION rwabs(mode%,buf%,cnt%,lgs%,drive%)
>   IF lgs%<&HFFFF
>     RETURN BIOS(4,mode%,L:buf%,cnt%,lgs%,drive%)
>   ELSE
>     RETURN BIOS(4,mode%,L:buf%,cnt%,-1,drive%,L:lgs%)
>   ENDIF
> ENDFUNC
6344c6514
<       status%=BIOS(4,0,L:buf%,1,lgs%,drive%)
---
>       status%=@rwabs(0,buf%,1,lgs%,drive%)
6402c6572
<       status%=BIOS(4,1,L:buf%,1,lgs%,drive%)
---
>       status%=@rwabs(1,buf%,1,lgs%,drive%)
6467c6637
<   .| Glob. Var.: a%,lgs%,el%,a$,spd%
---
>   .| Glob. Var.: a%,lgs%,el%,spd%
6471,6479c6641,6649
<   a%=@eingabe("Logische Sektornummer lesen:",lgs%)
<   IF el%>0
<     IF VAL(a$)>=spd% OR VAL(a$)<0
<       ~@alrt(3,"Grte Sectornummer:|"+STR$(spd%-1),1,"Abbruch")
<     ELSE
<       lgs%=MIN(MAX(0,a%),spd%-1,a%)
<       lesen
<       do_list
<     ENDIF
---
>   DO
>     a%=@eingabe("Logische Sektornummer lesen:",lgs%)
>     EXIT IF el%=0 OR a%>=0 AND a%<spd%
>     ~@alrt(3,"Grte Sektornummer:|"+STR$(spd%-1),1,"Nochmal")
>   LOOP
>   IF el%<>0
>     lgs%=a%
>     lesen
>     do_list
6486,6493c6656,6663
<   a%=@eingabe("Logische Sektornummer schreiben:",lgs%)
<   IF el%>0
<     IF a%>=spd% OR a%<0
<       ~@alrt(3,"Grte Sektornummer:|"+STR$(spd%-1),1,"Abbruch")
<     ELSE
<       lgs%=a%
<       schreiben
<     ENDIF
---
>   DO
>     a%=@eingabe("Logische Sektornummer schreiben:",lgs%)
>     EXIT IF el%=0 OR a%>=0 AND a%<spd%
>     ~@alrt(3,"Grte Sektornummer:|"+STR$(spd%-1),1,"Nochmal")
>   LOOP
>   IF el%<>0
>     lgs%=a%
>     schreiben
6501,6506c6671,6680
<   a%=@eingabe("Cluster lesen:",cluster%)
<   IF el%>0 AND a%>=0
<     lgs%=(a%-2)*spc%+anf_dat%
<     IF lgs%>=spd%
<       ~@alrt(3,"Grte Clusternummer:|"+STR$(cpd%-1),1,"Abbruch")
<       CLR lgs%
---
>   DO
>     a%=@eingabe("Cluster lesen:",cluster%)
>     EXIT IF el%=0 OR a%=0 OR a%>=2 AND a%<cpd%+2
>     ~@alrt(3,"Grte Clusternummer:|"+STR$(cpd%+1),1,"Nochmal")
>   LOOP
>   IF el%<>0
>     IF a%=0  ! Pseudo-Clusternummer 0 wird erster Sektor des Wurzelverzeichnisses
>       lgs%=anf_dir%
>     ELSE
>       lgs%=(a%-2)*spc%+anf_dat%
6518c6692
<     a%=@eingabe("Track",track%)
---
>     a%=@eingabe("Track:",track%)
6605c6779
<     EXIT IF (drv_map% AND 2^dr1%)=0
---
>     EXIT IF (drv_map% AND SHL(1,dr1%))=0
6609c6783
<     EXIT IF (drv_map% AND 2^dr2%)=0
---
>     EXIT IF (drv_map% AND SHL(1,dr2%))=0
6632c6806
<       ~@alrt(3,"Sektoren sind unterschiedlich gro",1,"Abbruch")
---
>       ~@alrt(3,"Sektoren sind unterschiedlich gro.",1,"Abbruch")
6673c6847
<     status%=BIOS(4,2,L:cmp_ram%,cmp%,start1%,dr1%)
---
>     status%=@rwabs(2,cmp_ram%,cmp%,start1%,dr1%)
6679c6853
<       ~@alrt(2,"Diskette gewechselt ?",1,wa$)
---
>       ~@alrt(2,"Diskette gewechselt?",1,wa$)
6683c6857
<     status%=BIOS(4,2,L:cmp1%,cmp%,start2%,dr2%)
---
>     status%=@rwabs(2,cmp1%,cmp%,start2%,dr2%)
6709c6883
<     ~@alrt(3,"Fehlerberlauf",1,"Abbruch")
---
>     ~@alrt(3,"Fehlerberlauf!",1,"Abbruch")
6751c6925
<   DEC old_cpos%
---
>   ' DEC old_cpos%
6755,6756c6929,6930
<   .| Glob. Var.: dum%,z%,tz%,buf%,old_cpos%,old_p%,fp%,n$,ch%,top%,txt_zeile%
<   .|     txt_spalte%,txt_links%,last%,ch2%
---
>   .| Glob. Var.: dum%,z%,tz%,buf%,old_cpos%,old_p%,old_ch%,fp%,n$,ch%,top%
>   .|     txt_zeile%,txt_spalte%,txt_links%,last%,ch2%
6767c6941
<       IF (a%<>old_cpos% OR b%<>old_p%)
---
>       IF a%<>old_cpos% OR b%<>old_p% OR ch%<>old_ch%
6771a6946
>           old_ch%=ch%
6789c6964
<     a$="* "+a$
---
>     a$=" * "+a$+" "
6791c6966
<     a$="  "+a$
---
>     a$=" "+a$+" "
7032,7033c7207,7208
<     cx%=((wi%(wind%,1)+1+7) DIV 8)*8    ! X- Ausgabe
<     cy%=ty%(wind%)-z.hoehe%             ! Y-   "
---
>     cx%=(wi%(wind%,1)+1+7) AND &HFFFFFFF8 ! x-Ausgabe
>     cy%=ty%(wind%)-z.hoehe%             ! y-  "
7048,7049c7223,7224
<       par%(0)=cx%+(xt%+9)*z.breite%     ! X-Pos
<       par%(1)=cy%+yt%*z.hoehe%+1        ! Y-Pos
---
>       par%(0)=cx%+(xt%+9)*z.breite%     ! x-Pos
>       par%(1)=cy%+yt%*z.hoehe%+1        ! y-Pos
7136c7311
<   IF BTST(mes&,1)=TRUE
---
>   IF BTST(mes&,1)=TRUE          ! Mausklick
7138c7313
<     IF wind_top%=whdl&(0) OR wind_top%=whdl&(1) ! geht mich was an ?
---
>     IF wind_top%=whdl&(0) OR wind_top%=whdl&(1) ! geht mich was an?
7140c7315
<       wind_aktpar(whdl&(wind_top%))
---
>       wind_aktpar((whdl&(0)=wind_top%)+1)
7156c7331
<                     address                   ! im Addressteil ?
---
>                     address                   ! im Adreteil?
7160c7335
<                     set_block                 ! Lasso ?
---
>                     set_block                 ! Lasso?
7197,7198c7372,7373
<     wind_aktpar(whdl&(mess1%))
<     IF CARD{mes_adr%}=10       ! Mitteilung - MENU
---
>     SELECT CARD{mes_adr%}
>     CASE 10                     ! Mitteilung - MN_SELECTED
7205c7380
<     ELSE                        !            - Window
---
>     CASE 20 TO 33               !            - Window
7208c7383,7385
<     ENDIF
---
>     CASE 50                     !            - AP_TERM
>       exit
>     ENDSELECT
7262c7439
< ' wind_dklick: Kommt nur mit NFATS=2 klar
---
> '
7268c7445
<   LOCAL a%,aa%,cl%,cz%,fatdiff%
---
>   LOCAL a%,aa%,cl%,cz%
7274,7279c7451,7452
<     IF lgs%>0 AND lgs%<len_fat%*2+1     ! = FAT
<       IF lgs%>len_fat%
<         fatdiff%=len_fat%
<       ENDIF
<       '
<       IF bflag%=1
---
>     IF lgs%>=anf_fat1% AND lgs%<anf_dir%  ! = FAT
>       IF (bflag% AND 1)<>0
7281c7454
<         ADD cz%,((lgs%-1-fatdiff%)*bps%)/2
---
>         ADD cz%,(((lgs%-anf_fat1%) MOD len_fat%)*bps%) DIV 2
7284c7457
<         ADD cz%,((lgs%-1-fatdiff%)*bps%)/1.5
---
>         ADD cz%,(((lgs%-anf_fat1%) MOD len_fat%)*bps%)/1.5
7288c7461
<       IF lgs%>len_fat%*2                ! woanders = DIR ?
---
>       IF lgs%>=anf_dir%                   ! woanders = DIR?
7292c7465
<           lgs%=(cl%-2)*spc%+len_fat%*2+len_dir%+1
---
>           lgs%=anf_dat%+(cl%-2)*spc%
7294c7467
<           lgs%=anf_fat2%+len_fat%
---
>           lgs%=anf_dir%
7484c7657
<   .| Felder    : wnr%(),whdl&(),wi%(),fe%()
---
>   .| Felder    : whdl&(),wi%(),fe%()
7491c7664
<   nr%=wnr%(whdl&) ! Windownummer durch Handle holen
---
>   nr%=(whdl&(0)=whdl&)+1  ! Fensternummer durch Handle holen
7504c7677
<     '  CASE 22        ! WM_CLOSE
---
>     ' CASE 22        ! WM_CLOSE
7533a7707,7712
>   CASE 33        ! WM_BOTTOMED
>     ~WIND_SET(whdl&,25,0,0,0,0)
>     IF nr%=wind%
>       wind%=1-wind%
>       wind_aktpar(wind%)
>     ENDIF
7601c7780
<   .| Felder    : wnr%()
---
>   .| Felder    : whdl&()
7606c7785
<   nr%=wnr%(whdl&)
---
>   nr%=(whdl&(0)=whdl&)+1
7629c7808
<   .| Felder    : wnr%()
---
>   .| Felder    : whdl&()
7634c7813
<   nr%=wnr%(whdl&)
---
>   nr%=(whdl&(0)=whdl&)+1
7646c7825
<   .| Felder    : wnr%()
---
>   .| Felder    : whdl&()
7658c7837
<   nr%=wnr%(whdl&)
---
>   nr%=(whdl&(0)=whdl&)+1
7767c7946
<   .| Felder    : whdl&(),wnr%(),w_titel%(),fe%()
---
>   .| Felder    : whdl&(),w_titel%(),fe%()
7774d7952
<     wnr%(handle&)=nr%
7798,7800c7976,7978
<   wc%=wi%(nr%,3)/z.breite%-1        ! Breite in Zeichen
<   tx%=((wi%(nr%,1)+1+7) DIV 8)*8    ! X- Ausgabe
<   ty%=wi%(nr%,2)+2*z.hoehe%+0       ! Y-   "
---
>   wc%=wi%(nr%,3)/z.breite%-1            ! Breite in Zeichen
>   tx%=(wi%(nr%,1)+1+7) AND &HFFFFFFF8   ! x-Ausgabe
>   ty%=wi%(nr%,2)+2*z.hoehe%+0           ! y-   "
7896c8074
<   .| Felder    : wnr%(),fe%()
---
>   .| Felder    : whdl&(),fe%()
7901c8079
<   nr%=wnr%(whdl&)
---
>   nr%=(whdl&(0)=whdl&)+1
7903,7904c8081,8082
<   wind_pos(whdl&)
<   wind_calc(whdl&)
---
>   wind_pos(nr%)
>   wind_calc(nr%)
7913c8091
<   .| Felder    : wnr%()
---
>   .| Felder    : whdl&()
7921c8099
<   wind%=wnr%(whdl&)
---
>   wind%=(whdl&(0)=whdl&)+1
7925c8103
<   '  do_cursor_anz(wind%)       !??
---
>   ' do_cursor_anz(wind%)       !??
7929,7931c8107,8109
<   CARD{GCONTRL}=109
<   {GCONTRL+2}=0
<   {GCONTRL+6}=0
---
>   GCONTRL(0)=109
>   GCONTRL(1)=0
>   GCONTRL(3)=0
7988c8166
<   .| Felder    : wnr%(),wi%(),tx%(),ty%(),out$()
---
>   .| Felder    : whdl&(),wi%(),tx%(),ty%(),out$()
7996c8174
<   r%=wnr%(whdl&)        ! Window nummer
---
>   r%=(whdl&(0)=whdl&)+1
8010c8188
<   ~WIND_GET(whdl&,11,wgx&,wgy&,wgb&,wgh&)       ! 1.Rechteck holen
---
>   ~WIND_GET(whdl&,11,wgx&,wgy&,wgb&,wgh&)       ! 1. Rechteck holen
8033c8211
<           '        Opcode,Struct,X-Pos,  Y- ,   Spalte,Zeile,Byte(-1=alles)
---
>           '        Opcode,Struct,x-Pos,  y- ,   Spalte,Zeile,Byte(-1=alles)
8089c8267
<   '         Opcode,Struct,X-Pos,Y-,Spalten,Zeilen,alles)
---
>   '         Opcode,Struct,x-Pos,y-,Spalten,Zeilen,alles)
8105c8283
<   '         Opcode,Struct,X-Pos,Y- ,Spalten,Zeilen,Nummer des Bytes(-1 = alles)
---
>   '         Opcode,Struct,x-Pos,y- ,Spalten,Zeilen,Nummer des Bytes(-1 = alles)
8148c8326
<   '         Op, Strukt,  X-,Y-,Spalten, first Revers, last Revers
---
>   '         Op, Strukt,  x-,y-,Spalten, first Revers, last Revers
8152c8330
<   .| Felder    : wnr%()
---
>   .| Felder    : whdl&()
8155c8333
<   nr%=wnr%(whdl&)
---
>   nr%=(whdl&(0)=whdl&)+1
8385c8563
<   .| Felder    : wnr%()
---
>   .| Felder    : whdl&()
8392c8570
<   get_info(wnr%(whdl&))
---
>   get_info((whdl&(0)=whdl&)+1)
8560c8738
<       wwa%=@alrt(2,"Daten sichern...",1,"Puffer|Block|Abbruch")
---
>       wwa%=@alrt(2,"Daten sichern ...",1,"Puffer|Block|Abbruch")
8566c8744
<       wwa%=@alrt(2,"Textfenster sichern...",1,"Puffer|Block|Abbruch")
---
>       wwa%=@alrt(2,"Textfenster sichern ...",1,"Puffer|Block|Abbruch")
8580c8758
<       wwa%=@alrt(2,"Was drucken...",1,"Puffer|Block|Abbruch")
---
>       wwa%=@alrt(2,"Was drucken?",1,"Puffer|Block|Abbruch")
8586c8764
<       wwa%=@alrt(2,"Textfenster drucken...",1,"Puffer|Block|Abbruch")
---
>       wwa%=@alrt(2,"Was aus dem Textfenster drucken?",1,"Puffer|Block|Abbruch")
8597,8601c8775,8779
<   .|     disk_defekt%,bootwr&,fil$,fhandle%,spf%,spt%,sid%,t%,b%
<   .| Ruft auf  : boot_sec,readmot,alrt,cbps,put_wert,put_char,lesen,box_draw
<   .|     form_do,clr_state,box_undraw,get_char$,schreiben,dsetdrv,dsetpath
<   .|     nam_conv$,fcreate,fclose,get_val,put_in_bootsec,term$,media,err_inf
<   .|     do_list
---
>   .|     disk_defekt%,bootwr&,fil$,fhandle%,spf%,spt%,sid%
>   .| Ruft auf  : boot_sec,readintelword,readintellong,alrt,cbps,put_wert
>   .|     put_char,lesen,box_draw,form_do,clr_state,box_undraw,get_char$
>   .|     schreiben,dsetdrv,dsetpath,nam_conv$,fcreate,fclose,get_val
>   .|     put_in_bootsec,writeintellong,media,err_inf,do_list
8603c8781
<   LOCAL a%,b,bbps%,c%,ex_obj&,oldlgs%,a$,b$,bb$
---
>   LOCAL a%,b,bbps%,c%,ex_obj&,oldlgs%,t%,a$,b$,bb$
8612,8613c8790,8791
<     c%=@readmot(22)             ! FAT-Gre
<     IF bflag%>0
---
>     c%=@readintelword(22)       ! FAT-Gre
>     IF (bflag% AND 1)<>0
8618,8621c8796,8804
<     bbps%=@readmot(11)
<     a%=spd%/spc%*b/bbps%        ! Kontrolle ob FAT zu klein
<     IF c%<a%
<       ~@alrt(3,"FAT zu klein !!! |Sollte "+STR$(a%)+" Sektoren|gross sein",1,"Aha")
---
>     bbps%=@readintelword(11)
>     t%=@readintelword(19)       ! Anzahl der Sektoren als Wort
>     IF t%=0
>       t%=@readintellong(32)     ! Anzahl der Sektoren als Langwort
>     ENDIF
>     a%=(t%-@readintelword(14)-BYTE{buf%+16}*c%-@readintelword(17)*32/bbps%)/BYTE{buf%+13}+2  ! bentigte FAT-Eintrge
>     a%=(a%*b+bbps%-0.5)/bbps%   ! bentigte FAT-Sektoren
>     IF c%<a%                    ! reichen die FAT-Sektoren?
>       ~@alrt(3,"FAT-Gre im Bootsektor zu klein!!! |Mu "+STR$(a%)+" Sektoren|gro sein!",1," Aha ")
8628c8811
<     put_wert(boot.dat%,bd1&,@readmot(11),4)
---
>     put_wert(boot.dat%,bd1&,@readintelword(11),4)
8630,8632c8813,8815
<     put_wert(boot.dat%,bd3&,@readmot(17),4)
<     put_wert(boot.dat%,bd4&,@readmot(22),4)
<     put_wert(boot.dat%,bd5&,@readmot(19),7)
---
>     put_wert(boot.dat%,bd3&,@readintelword(17),4)
>     put_wert(boot.dat%,bd4&,@readintelword(22),4)
>     put_wert(boot.dat%,bd5&,t%,7)
8634,8635c8817,8818
<     put_wert(boot.dat%,bd7&,@readmot(24),4)
<     put_wert(boot.dat%,bd8&,@readmot(26),4)
---
>     put_wert(boot.dat%,bd7&,@readintelword(24),4)
>     put_wert(boot.dat%,bd8&,@readintelword(26),4)
8652c8835
<   ' sonstige INFO's
---
>   ' sonstige INFOS
8659c8842
<   lgs%=anf_fat2%+len_fat%               ! Anfang Directory
---
>   lgs%=anf_dir%                         ! Anfang Directory
8664c8847
<     EXIT IF BYTE{buf%+zg%}=0 OR lgs%>=(anf_fat2%+len_fat%+len_dir%)
---
>     EXIT IF BYTE{buf%+zg%}=0 OR lgs%>=anf_dat%
8668c8851
<     EXIT IF (att% AND 8)=8
---
>     EXIT IF (att% AND &H18)=8
8676,8679d8858
<   IF lgs%>=anf_fat2%+len_fat%+len_dir%
<     lgs%=anf_fat2%+len_fat%
<     lesen
<   ENDIF
8689c8868
<     ~@alrt(1,"Auch eine leeres Laufwerk belegt |FAT+Directory !",1,"Aha")
---
>     ~@alrt(1,"Auch eine leeres Laufwerk belegt |FAT+Directory!",1," Aha ")
8714c8893
<             REPEAT
---
>             REPEAT  ! Pseudoschleife
8729,8731c8908,8912
<       a%=@get_val(boot.dat%,bd9&)       ! Serie
<       CARD{buf%+8}=(a% AND &HFFFF00) DIV 256
<       BYTE{buf%+10}=a% AND &HFF
---
>       IF drive%<2
>         a%=@get_val(boot.dat%,bd9&)     ! Serie
>         CARD{buf%+8}=SHR(a%,8)
>         BYTE{buf%+10}=a%
>       ENDIF
8736c8917
<       BYTE{buf%+13}=spc% AND &HFF
---
>       BYTE{buf%+13}=spc%
8740c8921,8926
<       put_in_bootsec(19,spd%)
---
>       IF spd%<&H10000
>         put_in_bootsec(19,spd%)         ! Anzahl der Sektoren als Wort
>       ELSE
>         put_in_bootsec(19,0)
>         @writeintellong(32,spd%)        ! Anzahl der Sektoren als Langwort
>       ENDIF
8747c8933
<       anf_dat%=@get_val(boot.dat%,bp6&) ! 1.Datensektor
---
>       anf_dat%=@get_val(boot.dat%,bp6&) ! 1. Datensektor
8750,8754c8936
<       CLR c%                            ! Checksum generieren
<       FOR t%=0 TO 254
<         ADD c%,CARD{buf%+t%*2}
<       NEXT t%
<       c%=c% AND &HFFFF
---
>       CARD{buf%+510}=0                  ! Prfsumme
8756,8759c8938,8939
<       a%=VAL(@term$("$"+a$))
<       b%=(a%-c%) AND &HFFFF
<       BYTE{buf%+510}=b% DIV 256
<       BYTE{buf%+511}=b% AND &HFF
---
>       a%=VAL("$"+a$)
>       CARD{buf%+510}=a%-@chk_sum
8761d8940
<       CLR lgs%
8762a8942
>         CLR lgs%
8779c8959
< FUNCTION readintel(wo%)
---
> FUNCTION readintelword(wo%)
8781,8782c8961,8962
<   .| Aufruf in : do_mark_bad-4,
<   RETURN 256*BYTE{buf%+wo%}+BYTE{buf%+wo%-1}
---
>   .| Aufruf in : clr_part-4,do_mark_bad_cluster-5,do_mark_bad-4,disc_info-10,
>   RETURN BYTE{buf%+wo%}+256*BYTE{buf%+wo%+1}
8784c8964
< FUNCTION readmot(wo%)
---
> FUNCTION readintellong(wo%)
8786,8787c8966,8967
<   .| Aufruf in : clr_part-3,disc_info-8,
<   RETURN BYTE{buf%+wo%}+256*BYTE{buf%+wo%+1}
---
>   .| Aufruf in : disc_info-1,
>   RETURN BYTE{buf%+wo%}+SHL(BYTE{buf%+wo%+1},8)+SHL(BYTE{buf%+wo%+2},16)+SHL(BYTE{buf%+wo%+3},24)
8791,8793c8971,8981
<   .| Aufruf in : disc_info-6,
<   BYTE{buf%+wo%}=was% AND &HFF
<   BYTE{buf%+wo%+1}=(was% AND &HFF00)/&H100
---
>   .| Aufruf in : disc_info-9,
>   BYTE{buf%+wo%}=was%
>   BYTE{buf%+wo%+1}=SHR(was%,8)
> RETURN
> PROCEDURE writeintellong(wo%,was%)
>   .| Glob. Var.: buf%
>   .| Aufruf in : make_part-2,disc_info-1,
>   BYTE{buf%+wo%}=was%
>   BYTE{buf%+wo%+1}=SHR(was%,8)
>   BYTE{buf%+wo%+2}=SHR(was%,16)
>   BYTE{buf%+wo%+3}=SHR(was%,24)
8820c9008
<       ~@alrt(3,"Kein BIOS-Parameterblock!|Setze Standardwerte ein |sonst SYSTEM-CRASH !",0," Ok ")
---
>       ~@alrt(3,"Kein BIOS-Parameterblock!|Setze Standardwerte ein, |sonst SYSTEM-CRASH!",0," Ok ")
8823c9011
<       IF bflag%=0
---
>       IF (bflag% AND 1)=0
8847c9035
<       boot_wrong("max. "+STR$(buf_size%)+" Bytes/Sektor")
---
>       boot_wrong("Max. "+STR$(buf_size%)+" Bytes/Sektor!")
8885c9073
<   a$="ACHTUNG:|Laufwerk "+CHR$(drive%+65)+" mit|"+STR$(cpd%*spc%)+" Sektoren wird gelscht!"
---
>   a$="ACHTUNG:|Laufwerk "+CHR$(drive%+65)+" mit|"+STR$(spd%)+" Sektoren wird gelscht!"
8891c9079
<         start%=spd%-2
---
>         start%=spd%
8894c9082
<         start%=len_fat%*2+len_dir%
---
>         start%=anf_dat%
8904c9092,9095
<         FOR lgs%=start% TO 2 STEP -2
---
>         FOR lgs%=start%-2 TO anf_dir% STEP -2
>           IF FRE()<300
>             ~FRE(0)  ! Garbage collection erzwingen wegen Compiler-Fehler!
>           ENDIF
8909c9100
<           status%=BIOS(4,1,L:buf%,2,lgs%,drive%)
---
>           status%=@rwabs(1,buf%,2,lgs%,drive%)
8912c9103
<         lgs%=1
---
>         lgs%=anf_dir%
8914c9105
<           status%=BIOS(4,1,L:buf%,1,lgs%,drive%)
---
>           status%=@rwabs(1,buf%,1,lgs%,drive%)
8916c9107
<         a$="Sektor: "+RIGHT$(n$+STR$(lgs%),5)
---
>         a$="FAT lschen"
8928a9120
> '
8944c9136
<       FOR lgs%=0 TO len_fat%*2+len_dir%
---
>       FOR lgs%=0 TO anf_dat%-1
8946c9138
<         do_list
---
>         ' do_list  ! dauert zu lange
8953c9145
<       ~@alrt(3,"Bitte nicht auf | dasselbe Laufwerk | DISC-SAVE !",3,"Ok")
---
>       ~@alrt(3,"Bitte nicht auf|dasselbe Laufwerk! | DISK-SAVE!",3," Ok ")
8963c9155
<   fi$=@fsel$("*.DAT","SAVE_"+CHR$(drive%+65)+".DAT","Disc-Load",5)
---
>   fi$=@fsel$("*.DAT","SAVE_"+CHR$(drive%+65)+".DAT","Disk-Load",5)
8984a9177
> '
9014,9015c9207,9208
<   a$="Laufwerk "+CHR$(drive%+65)+":  prfen"
<   IF @alrt(2,a$+"?",1,wa$)=1
---
>   a$="Laufwerk "+CHR$(drive%+65)+": prfen?"
>   IF @alrt(2,a$,1,wa$)=1
9033,9034c9226,9227
<       EXIT IF @was_ist>0 OR lgs%>=spd%-1
<       a1%=MIN(a1%,spd%-lgs%-1)
---
>       EXIT IF @was_ist>0 OR lgs%>=spd%
>       a1%=MIN(a1%,spd%-lgs%)
9052c9245
<         status%=BIOS(4,2,L:a2%,a1%,lgs%,drive%)
---
>         status%=@rwabs(2,a2%,a1%,lgs%,drive%)
9057c9250
<             status%=BIOS(4,2,L:buf%,1,lgs%,drive%)
---
>             status%=@rwabs(2,buf%,1,lgs%,drive%)
9070c9263
<       IF @alrt(2,STR$(b%)+" defekte Sektoren gefunden | FAT schreiben? ",0,wa$)=1
---
>       IF @alrt(2,STR$(b%)+" defekte Sektoren gefunden! | FAT schreiben?",0,wa$)=1
9076c9269
<     IF a2%>0
---
>     IF a1%>1  ! Wurde Puffer per Malloc() reserviert?
9094,9095c9287,9288
<   cl%=MAX(0,INT((a%-anf_dat%)/spc%)+2)
<   IF cl%>0
---
>   cl%=INT((a%-anf_dat%)/spc%)+2
>   IF cl%>=2
9115c9308
<     IF (drv_map% AND 2^i%)<>0
---
>     IF (drv_map% AND SHL(1,i%))<>0
9130c9323
<     IF di%>=0 AND (drv_map% AND 2^di%)
---
>     IF di%>=0 AND (drv_map% AND SHL(1,di%))
9192c9385
<   .|     sch%,foc%,dmt%,cpd%,rrg%,ddd%,dv%,ed%,sektor%,status%,drive%
---
>   .|     foc%,dmt%,cpd%,rrg%,ddd%,dv%,ed%,sektor%,status%,drive%
9197c9390
<   LOCAL aa%,bac%,cl%,cpf,cpf%,ay%,i%,j%,sf%,witch%,repair%
---
>   LOCAL aa%,bac%,cl%,cpf%,ay%,i%,j%,sf%,witch%,repair%
9221,9225c9414
<       cpf=laenge%(sf%)/(bps%*spc%)    ! Cluster pro File
<       IF cpf<>INT(cpf)
<         INC cpf
<       ENDIF
<       cpf%=cpf
---
>       cpf%=(laenge%(sf%)+bps%*spc%-1)/(bps%*spc%)  ! Cluster pro File
9233,9235c9422,9424
<       aa%=@read_in_fat(bac%)
<       IF aa%>0
<         sch%=@alrt(2,"Cluster ist nicht frei ",1,"Abbruch")
---
>       IF @read_in_fat(bac%)>0
>         ~@alrt(2,"Start-Cluster ist nicht frei!",1,"Abbruch")
>         EXIT IF TRUE
9237d9425
<       EXIT IF aa%>0
9240c9428
<       dmt%=@alrt(2,"Repair ohne Rckfragen?",1,"Ohne|Mit")
---
>       dmt%=@alrt(2,"Repair ohne Rckfragen?",1," Ohne |Mit")
9245c9433
<           EXIT IF bac%>cpd%
---
>           EXIT IF bac%>cpd%+1
9282c9470
<         EXIT IF bac%>cpd% OR rrg%=4
---
>         EXIT IF bac%>cpd%+1 OR rrg%=4
9294,9295c9482,9483
<         IF (att%(sf%) AND 16)>0   ! Ordner?
<           dv%=@alrt(2,"Das ist Verzeichnis. |Weitersuchen?",1,"Ja|Nein|Abbruch")
---
>         IF (att%(sf%) AND 16)<>0   ! Ordner?
>           dv%=@alrt(2,"Das ist ein Verzeichnis. |Weitersuchen?",1,"Ja|Nein|Abbruch")
9320c9508
<           status%=BIOS(4,0,L:VARPTR(bb$),1,sektor%,drive%)
---
>           status%=@rwabs(0,VARPTR(bb$),1,sektor%,drive%)
9333c9521
<               status%=BIOS(4,1,L:VARPTR(bb$),1,sektor%,drive%)
---
>               status%=@rwabs(1,VARPTR(bb$),1,sektor%,drive%)
9402c9590
<     ~@alrt(3,"In welche Datei|soll ich schreiben ?",1,"Abbruch")
---
>     ~@alrt(3,"In welche Datei|soll ich schreiben?",1,"Abbruch")
9428c9616
< PROCEDURE file_compare  ! 2 Dateien(Pfade) vergleichen
---
> PROCEDURE file_compare  ! 2 Dateien (Pfade) vergleichen
9463c9651
<         DEC a%          ! da erst der 2.Name gefunden wird, eine Zeile drber
---
>         DEC a%          ! da erst der 2. Name gefunden wird, eine Zeile drber
9530c9718
<       dev("Datei aufteilen - 1.Datei",35)
---
>       dev("Datei aufteilen - 1. Datei",35)
9549c9737
<         dev("Datei aufteilen - 2.Datei",36)
---
>         dev("Datei aufteilen - 2. Datei",36)
9571c9759
<     ~@alrt(3,"Bitte Datei erst ffnen",1,"Mach ich")
---
>     ~@alrt(3,"Bitte Datei erst ffnen.",1,"Mach ich")
9655c9843
<     IF @alrt(2,RIGHT$(fi$,38)+"|lschen ???",0,wa$)=1
---
>     IF @alrt(2,RIGHT$(fi$,38)+"|lschen???",0,wa$)=1
9839c10027
<   out(STR$(total%)+" Dateien sind zu vergleichen...")
---
>   out(STR$(total%)+" Dateien sind zu vergleichen ...")
9851c10039
<     DEC j%      ! 1.Zeichen das nicht gleich ist
---
>     DEC j%      ! 1. Zeichen das nicht gleich ist
9898c10086
<     erg%=@alrt(1,"Sektoren einzeln kopieren?",1,"Ja|Nein")
---
>     erg%=@alrt(1,"Sektoren einzeln kopieren?",1,"Ja| Nein ")
9903c10091
<     IF a2%>0                            ! Speicher da ?
---
>     IF a2%>0                            ! Speicher da?
9907c10095
<       IF fhandle%>0                     ! Ohne Fehler ?
---
>       IF fhandle%>0                     ! Ohne Fehler?
9916c10104
<       IF fhandle%>0                     ! Ohne Fehler ?
---
>       IF fhandle%>0                     ! Ohne Fehler?
9945,9947c10133,10134
<     IF fhandle%=-36
<       ~GEMDOS(62,W:fhandle%)            ! FCLOSE
<       ~@alrt(1,"Datei kann nicht verndert werden!",1,"Aha")
---
>     IF fhandle%=-36  ! EACCDN
>       ~@alrt(1,"Datei kann nicht verndert werden!",1," Aha ")
9978c10165
<   .|     dats4&,dat$,n$,datdat&,dattime&,datok&,b%,fi_o$
---
>   .|     dats4&,dat$,n$,datdat&,dattime&,datok&,fi_o$
9984c10171
<   LOCAL a%,i%,j&,ex_obj&,dt%,tm%,a$,b$,path$,fil$,new$,bra$,dt$,tm$
---
>   LOCAL a%,b%,i%,j&,ex_obj&,dt%,tm%,a$,b$,path$,fil$,new$,dt$,tm$
9996c10183
<       cross_rsc(d.atei%,j&,d.attr% AND 2^i%)
---
>       cross_rsc(d.atei%,j&,d.attr% AND SHL(1,i%))
9998a10186,10203
>     OB_TYPE(d.atei%,dat4&)=OB_TYPE(d.atei%,dat4&) AND &HFF  !RS: In der Resource ndern!
>     OB_TYPE(d.atei%,dat5&)=OB_TYPE(d.atei%,dat5&) AND &HFF  !RS: "
>     IF (d.attr% AND &H18)=8     ! Datentrgername
>       OB_TYPE(d.atei%,dat1&)=OB_TYPE(d.atei%,dat1&) AND &HFF
>       OB_TYPE(d.atei%,dat2&)=OB_TYPE(d.atei%,dat2&) AND &HFF
>       OB_TYPE(d.atei%,dat3&)=OB_TYPE(d.atei%,dat3&) AND &HFF
>       ' Ist von MS-DOS oder Mac das Archiv-Bit gesetzt, lt es sich lschen.
>       IF (d.attr% AND &H20)<>0
>         OB_TYPE(d.atei%,dat6&)=OB_TYPE(d.atei%,dat6&) OR &H1200
>       ELSE
>         OB_TYPE(d.atei%,dat6&)=OB_TYPE(d.atei%,dat6&) AND &HFF
>       ENDIF
>     ELSE
>       OB_TYPE(d.atei%,dat1&)=OB_TYPE(d.atei%,dat1&) OR &H1200
>       OB_TYPE(d.atei%,dat2&)=OB_TYPE(d.atei%,dat2&) OR &H1200
>       OB_TYPE(d.atei%,dat3&)=OB_TYPE(d.atei%,dat3&) OR &H1200
>       OB_TYPE(d.atei%,dat6&)=OB_TYPE(d.atei%,dat6&) OR &H1200
>     ENDIF
10003d10207
<     bra$=@fread$(fhandle%,2)    ! Byte 0+1 lesen
10015,10027c10219,10235
<     d.header%=CVL(MID$(buf$,23,4))      ! Dateiheader (Byte 25) -> Dialog
<     j&=dath1&
<     FOR i%=0 TO 7
<       IF i%<>3
<         cross_rsc(d.atei%,j&,d.header% AND 2^i%)
<       ENDIF
<       INC j&
<     NEXT i%
<     a%=(d.header% AND &HF0000000)
<     a%=SHR(a%,28)
<     put_char(d.atei%,dath4&,LEFT$(STR$(a%),2))  ! zustzlichen Speicher?
<     '
<     IF CVI(bra$)<>&H601A                        ! Programmdatei?
---
>     IF CVI(buf$)=&H601A                 ! Programmdatei?
>       d.header%=CVL(MID$(buf$,23,4))    ! Dateiheader.ph_prgflags -> Dialog
>       j&=dath1&
>       FOR i%=0 TO 7
>         IF i%<>3
>           cross_rsc(d.atei%,j&,d.header% AND SHL(1,i%))
>         ENDIF
>         INC j&
>       NEXT i%
>       a%=SHR(d.header%,28)
>       put_char(d.atei%,dath4&,LEFT$(STR$(a%),2))  ! zustzlicher Speicher
>       '
>       put_char(d.atei%,dats1&,HEX$(CVL(MID$(buf$,3,4)),9))
>       put_char(d.atei%,dats2&,HEX$(CVL(MID$(buf$,7,4)),9))
>       put_char(d.atei%,dats3&,HEX$(CVL(MID$(buf$,11,4)),9))
>       put_char(d.atei%,dats4&,HEX$(CVL(MID$(buf$,15,4)),9))
>     ELSE
10032,10035d10239
<     put_char(d.atei%,dats1&,HEX$(CVL(MID$(buf$,3,4)),9))
<     put_char(d.atei%,dats2&,HEX$(CVL(MID$(buf$,7,4)),9))
<     put_char(d.atei%,dats3&,HEX$(CVL(MID$(buf$,11,4)),9))
<     put_char(d.atei%,dats4&,HEX$(CVL(MID$(buf$,15,4)),9))
10039c10243
<     ~@fclose(fhandle%)                  ! Datei schliessen
---
>     ~@fclose(fhandle%)                  ! Datei schlieen
10043a10248
>     ' tm$=tm$+RIGHT$(n$+STR$((tm% AND 31)*2),2)  RS: BUG: erst Resource ndern!
10062c10267
<       tm%=VAL(LEFT$(b$,2))*2048+VAL(MID$(b$,3,2))*32
---
>       tm%=VAL(LEFT$(b$,2))*2048+VAL(MID$(b$,3,2))*32+VAL(MID$(b$,5,2))/2
10071,10089c10276,10296
<         CLR a%                          ! Header bearbeiten
<         j&=dath1&
<         FOR i%=0 TO 7
<           IF (OB_STATE(d.atei%,j&) AND 2)>0 AND i%<>3
<             a%=a% OR 2^i%
<           ENDIF
<           INC j&
<         NEXT i%
<         '
<         b%=@get_val(d.atei%,dath4&)
<         b%=SHL(b%,28)
<         a%=(a% AND &HFFFFFFF) OR b%
<         ' ----------------
<         ~@fseek(22,fhandle%,0)          ! Pointer auf Datei-Headerbits
<         IF a%<>d.header%                ! wenn sich was gendert hat
<           IF (d.attr% AND 1)>0          ! STATUS: NUR LESEN ?
<             ~@alrt(3,"Datei hat Status 'NUR LESEN' ",1,"Abbruch")
<           ELSE
<             fwrite(fhandle%,MKL$(a%))   ! sonst schreiben
---
>         IF CVI(buf$)=&H601A             ! Programmdatei?
>           CLR a%                        ! Header bearbeiten
>           j&=dath1&
>           FOR i%=0 TO 7
>             IF (OB_STATE(d.atei%,j&) AND 2)>0 AND i%<>3
>               a%=a% OR SHL(1,i%)
>             ENDIF
>             INC j&
>           NEXT i%
>           '
>           b%=@get_val(d.atei%,dath4&)
>           b%=SHL(b%,28)
>           a%=a% OR b%
>           ' ----------------
>           ~@fseek(22,fhandle%,0)        ! Pointer auf Datei-Headerbits
>           IF a%<>d.header%              ! wenn sich was gendert hat
>             IF (d.attr% AND 1)<>0       ! STATUS: NUR LESEN?
>               ~@alrt(3,"Datei hat Status 'NUR LESEN'! ",1,"Abbruch")
>             ELSE
>               fwrite(fhandle%,MKL$(a%)) ! sonst schreiben
>             ENDIF
10092c10299
<         ~@fclose(fhandle%)              ! Datei schliessen
---
>         ~@fclose(fhandle%)              ! Datei schlieen
10098,10099c10305,10306
<         IF (OB_STATE(d.atei%,j&) AND 2)>0
<           a%=a% OR 2^i%
---
>         IF (OB_STATE(d.atei%,j&) AND 2)<>0
>           a%=a% OR SHL(1,i%)
10112c10319,10327
<         IF @frename(fi$,new$)=0 AND fi$=fi_o$
---
>         IF (d.attr% AND &H18)=8         ! Datentrgername
>           a%=@fcreate(new$,8)
>           IF a%>0
>             ~@fclose(a%)
>           ENDIF
>         ELSE
>           a%=@frename(fi$,new$)
>         ENDIF
>         IF a%=0 AND fi$=fi_o$
10175c10390
<             EXIT IF aa%=ed%
---
>             EXIT IF aa%>=ed%-7
10191d10405
<           xt%=b%-yt%*16+51
10193a10408,10409
>           ELSE
>             xt%=b%-yt%*16+51
10202c10418
<       lgs%=anf_fat2%+len_fat%
---
>       lgs%=anf_dir%
10240c10456
<       IF (att%(i%) AND 16)>0
---
>       IF (att%(i%) AND 16)<>0
10242,10243c10458
<       ENDIF
<       IF (att%(i%) AND 8)>0
---
>       ELSE IF (att%(i%) AND 8)<>0
10246,10247c10461
<       ENDIF
<       IF (att%(i%) AND 7)>0
---
>       ELSE IF (att%(i%) AND 7)<>0
10263c10477
<   .|     anf_dat%
---
>   .|     anf_dat%,drive%
10267c10481
<   LOCAL a%
---
>   LOCAL a%,a$
10275c10489,10491
<       IF (att%(a%) AND (16+8))=0
---
>       ' RS: Name lt sich ndern. Mit Big-DOS auch Zeit und Hidden-/System-Attribut von Verzeichnissen.
>       a$=CHR$(65+drive%)+":\"
>       IF (att%(a%) AND (16+8))=0 OR GEMDOS(&H130,&H440F,L:V:a$,L:0)=CVL("BDOS")
10278c10494
<         ~@alrt(1,"Das geht nur mit Dateien",1,"Aha")
---
>         ~@alrt(1,"Das geht nur mit Dateien!",1," Aha ")
10297,10298c10513,10514
<   change_pfad(20,drive%)!                       In Pfad Nummer 20 Laufwerk umstellen
<   fi$=@fsel$("*.*","","Ordner umbenennen",20)!  Fileselektor aufrufen, Zielpfad holen
---
>   change_pfad(20,drive%)                      ! In Pfad Nummer 20 Laufwerk umstellen
>   fi$=@fsel$("*.*","","Ordner umbenennen",20) ! Fileselektor aufrufen, Zielpfad holen
10300,10306c10516,10522
<     IF @media(drive%)=0 !                       Auf Laufwerk drive% Wechsel auslsen
<       ~@chk_drv(fi$) !                          Eventuell auf neues Laufwerk umstellen
<       bb$=STRING$(bps%*spc%,0) !                Clusterpuffer anlegen
<       find_files !                              Dateibaum durchsuchen
<       disc_on !                                 In Diskmodus umschalten
<       fld$=@get_fld_name$(fi$)  !               Ordnernamen holen aus Pfadnamen
<       a$=LEFT$(fi$,LEN(fi$)-1) !                Backslash am Ende entfernen
---
>     IF @media(drive%)=0                       ! Auf Laufwerk drive% Wechsel auslsen
>       ~@chk_drv(fi$)                          ! Eventuell auf neues Laufwerk umstellen
>       bb$=STRING$(bps%*spc%,0)                ! Clusterpuffer anlegen
>       find_files                              ! Dateibaum durchsuchen
>       disc_on                                 ! In Diskmodus umschalten
>       fld$=@get_fld_name$(fi$)                ! Ordnernamen holen aus Pfadnamen
>       a$=LEFT$(fi$,LEN(fi$)-1)                ! Backslash am Ende entfernen
10310,10314c10526,10530
<         cl%=cluster%(i%) !                      Cluster des Ordners holen
<         a$=file$(i%) !                          Dateiname holen
<         a$=RIGHT$(a$,LEN(a$)-RINSTR(a$,"\")) !  Pfadanteil wegfiltern
<         folder$=@nam_conv$(a$,1) !              Pfadname
<         lgs%=sec%(i%)                   !       Sektor, in dem Ordner steht
---
>         cl%=cluster%(i%)                      ! Cluster des Ordners holen
>         a$=file$(i%)                          ! Dateiname holen
>         a$=RIGHT$(a$,LEN(a$)-RINSTR(a$,"\"))  ! Pfadanteil wegfiltern
>         folder$=@nam_conv$(a$,1)              ! Pfadname
>         lgs%=sec%(i%)                         ! Sektor, in dem Ordner steht
10317c10533
<         status%=BIOS(4,0,L:V:bb$,spc%,lgs%,drive%) ! Cluster lesen
---
>         status%=@rwabs(0,V:bb$,spc%,lgs%,drive%) ! Cluster lesen
10321,10322c10537,10538
<         WHILE i%<bps%*spc%-32 AND ab%=0 !       Cluster nach Eintrgen absuchen
<           EXIT IF ASC(MID$(bb$,i%,1))=0 !       letzter Eintrag (beginnt mit 0)
---
>         WHILE i%<bps%*spc%-32 AND ab%=0       ! Cluster nach Eintrgen absuchen
>           EXIT IF ASC(MID$(bb$,i%,1))=0       ! letzter Eintrag (beginnt mit 0)
10324c10540
<           IF MID$(bb$,i%,11)=folder$ !          Ist das unser Ordner?
---
>           IF MID$(bb$,i%,11)=folder$          ! Ist das unser Ordner?
10329c10545
<               status%=BIOS(4,1,L:V:bb$,spc%,lgs%,drive%) ! Cluster schreiben
---
>               status%=@rwabs(1,V:bb$,spc%,lgs%,drive%) ! Cluster schreiben
10332c10548
<             ab%=1 !                             gefunden
---
>             ab%=1                             ! gefunden
10335c10551
<           ADD i%,32 !                           nchster Eintrag
---
>           ADD i%,32                           ! nchster Eintrag
10349c10565
<     lgs%=anf_fat2%+len_fat%
---
>     lgs%=anf_dir%
10369c10585
<   fi$=@fsel$("*.*","","DIR - SORT",21)
---
>   fi$=@fsel$("*.*","","DIR-SORT",21)
10380c10596
<         ~@alrt(3,"Ordner nicht gefunden!",1,"Dumm")
---
>         ~@alrt(3,"Ordner nicht gefunden!",1," Dumm ")
10388c10604
<       lgs%=anf_fat2%+len_fat%           ! Anfang Wurzelverzeichnis
---
>       lgs%=anf_dir%
10436c10652
<           IF ASC(a$)<>46                                ! "." oder ".." ?
---
>           IF ASC(a$)<>46                                ! "." oder ".."?
10439c10655
<           IF (BYTE{buf%+zg%+11} AND 16)                 ! Ordner ?
---
>           IF (BYTE{buf%+zg%+11} AND 16)                 ! Ordner?
10605c10821
<   IF fehler%<0
---
>   IF fehler%<0 AND fehler%<>&H80000000  ! Nur wegen Fehler im GEMDOS des TOS 4!
10606a10823
>     fehler%=BIOS(10)
10635c10852
<   .| Glob. Var.: gm$
---
>   .| Glob. Var.: dos_version&,gm$
10640c10857
<   IF fehler%<>0
---
>   IF dos_version&>=&H15 AND fehler%<>0
10653c10870
<     err_inf1(fehler%,"Fattrib: "+df$+" "+STR$(attr%),gm$)
---
>     err_inf1(fehler%,"Fattrib: "+df$+" 2$"+BIN$(attr%),gm$)
10665c10882
<   IF fehler%<5
---
>   IF fehler%<0
10681c10898
<     err_inf1(fehler%," Fopen: "+df$,gm$)
---
>     err_inf1(fehler%,"Fopen: "+df$,gm$)
10723c10940
<   IF (a% AND 1)>0       ! Schreibgeschtzt?
---
>   IF (a% AND 1)<>0       ! Schreibgeschtzt?
10750c10967
<     err_inf1(fehler%,"Fread:Lesen",gm$)
---
>     err_inf1(fehler%,"Fread: Lesen",gm$)
10806c11023
<   IF NOT GEMDOS(78,L:VARPTR(all$),&X110111)     ! Fsfirst
---
>   IF GEMDOS(78,L:VARPTR(all$),&X110111)=0     ! Fsfirst
10811c11028
<       IF (ASC(MID$(dta$,22,1)) AND 16)>0  ! Ordner?
---
>       IF (ASC(MID$(dta$,22,1)) AND 16)<>0  ! Ordner?
10822c11039,11041
<         ON lies_mode% GOSUB lies_1,dum,lies_3,lies_4
---
>         IF (ASC(MID$(dta$,22,1)) AND &X1000)=0  ! kein Diskname?
>           ON lies_mode% GOSUB lies_1,dum,lies_3,lies_4
>         ENDIF
10829c11048
< PROCEDURE sav_buf             ! Puffer auf Disc
---
> PROCEDURE sav_buf             ! Puffer auf Disk
10862c11081
< PROCEDURE sav_block           ! Block  auf Disc
---
> PROCEDURE sav_block           ! Block auf Disk
10908c11127
< PROCEDURE print_blk           ! Block  auf Drucker
---
> PROCEDURE print_blk           ! Block auf Drucker
11046c11265
<     IF (ev_ks& AND 8)>0         ! = ALT
---
>     IF (ev_ks& AND 8)<>0        ! = ALT
11049c11268
<       IF (ev_ks& AND 4)>0       ! = CTRL
---
>       IF (ev_ks& AND 4)<>0      ! = CTRL
11101,11102c11320,11321
<             '         CASE 27               ! ESC
<             '            exit
---
>             ' CASE 27               ! ESC
>             '   exit
11133c11352
<     out("LGS:"+STR$(lgs%))
---
>     out("LGS: "+STR$(lgs%))
11154c11373,11374
<   IF hi%>58 AND hi%<69
---
>   SELECT hi%
>   CASE 59 TO 68
11156,11174d11375
<   ELSE
<     SELECT hi%
<       '
<     CASE 80                     ! DOWN
<       c_down
<     CASE 72                     ! UP
<       c_up
<     CASE 75                     ! LEFT
<       c_left
<     CASE 77                     ! RIGHT
<       c_right
<       '
<     CASE 71                     ! HOME
<       top(wind%)
<     CASE 98                     ! HELP
<       opt_help
<     CASE 97                     ! UNDO
<       do_undo
<     ENDSELECT
11176c11377,11392
<   ENDIF
---
>   CASE 80                       ! DOWN
>     c_down
>   CASE 72                       ! UP
>     c_up
>   CASE 75                       ! LEFT
>     c_left
>   CASE 77                       ! RIGHT
>     c_right
>     '
>   CASE 71                       ! HOME
>     top(wind%)
>   CASE 98                       ! HELP
>     opt_help
>   CASE 97                       ! UNDO
>     do_undo
>   ENDSELECT
11189c11405
<       IF xt%>49 AND xt%<beg_ascii%+15   ! ASCII - BEREICH
---
>       IF xt%>beg_ascii% AND xt%<beg_ascii%+15   ! ASCII-Bereich
11292c11508
<       WHILE b%<=c%       ! schon am Ende ?
---
>       WHILE b%<=c%       ! schon am Ende?
11379c11595
< PROCEDURE ctrl_h              ! Block markierung lschen
---
> PROCEDURE ctrl_h              ! Blockmarkierung lschen
11684d11899
<   xt%=x%-yt%*16+beg_ascii%
11686a11902,11903
>   ELSE
>     xt%=x%-yt%*16+beg_ascii%
12089,12090c12306,12308
<     xt%=45
<     IF hex!=FALSE
---
>     IF hex!=TRUE
>       xt%=45
>     ELSE
12283c12501
<     la%=@eingabe("List-Adresse :",la%)
---
>     la%=@eingabe("List-Adresse:",la%)
12287a12506
>         pos_cursor(0)
12290a12510
>           pos_cursor(0)
12292,12294c12512
<           IF la%<=wzb%
<             z%=la%
<           ELSE
---
>           IF la%<wzb%
12299d12516
<       pos_cursor(0)
12329c12546
<   LOCAL a%,a$,b$,trk
---
>   LOCAL a%,a$,b$
12334c12551
<     a%=lgs%                       ! logischen Sektor fr Anzeige umrechnen
---
>     ' logischen Sektor fr Anzeige umrechnen in Track und Sektor
12336,12337c12553,12554
<       track%=a%/spt%              ! in Track und Sektor
<       sektor%=(a% MOD spt%)+1
---
>       track%=lgs%/spt%
>       sektor%=(lgs% MOD spt%)+1
12339,12340c12556
<         trk=track%/2
<         IF trk=INT(trk)
---
>         IF EVEN(track%)
12345c12561
<         track%=trk
---
>         DIV track%,2
12350,12352c12566,12583
<     cluster%=MAX(0,INT((lgs%-anf_dat%)/spc%)+2)
<     MID$(info_line$,1)="LGS:"+@dec_hex_val$(lgs%,6)+" "
<     MID$(info_line$,12)="Clu:"+@dec_hex_val$(cluster%,5)
---
>     cluster%=INT((lgs%-anf_dat%)/spc%)+2
>     MID$(info_line$,1)="LGS:"+@dec_hex_val$(lgs%,6)
>     IF cluster%<2                 ! Systembereich
>       CLR cluster%
>       IF lgs%>=anf_dir%
>         MID$(info_line$,12)="Clu:_ROOT"
>       ELSE IF lgs%>=anf_fat2% AND (bflag% AND 2)<>0
>         MID$(info_line$,12)="Clu:_FAT "
>       ELSE IF lgs%>=anf_fat2%
>         MID$(info_line$,12)="Clu:_FAT2"
>       ELSE IF lgs%>=anf_fat1%
>         MID$(info_line$,12)="Clu:_FAT1"
>       ELSE
>         MID$(info_line$,12)="Clu:_BOOT"
>       ENDIF
>     ELSE                          ! Datenbereich
>       MID$(info_line$,12)="Clu:"+@dec_hex_val$(cluster%,5)
>     ENDIF
12408c12639
<   .| Glob. Var.: f_pexec%,rom_version%
---
>   .| Glob. Var.: f_pexec%,tos_version&
12417,12418c12648,12649
<   IF rom_version%<&H104
<     wwa%=@alrt(2,"Programm ausfhren ?|"+a$,1,"Ok|Abbruch")
---
>   IF tos_version&<&H104
>     wwa%=@alrt(2,"Programm ausfhren?|"+a$,1,"Ok|Abbruch")
12427c12658
<   .|     dy%,dw%,rom_version%,dh%
---
>   .|     dy%,dw%,dh%,tpin$
12431c12662
<   LOCAL a$,b$,i%,env%,wwa%,erg2%,tpin$,ttp$,env$
---
>   LOCAL a$,b$,env%,wwa%,erg2%,ttp$,env$
12443c12674
<       ttp$=CHR$(LEN(a$)+1)+a$+CHR$(0)
---
>       ttp$=CHR$(LEN(a$))+a$+CHR$(0)
12448,12453c12679,12684
<       env%=LPEEK(BASEPAGE+&H2C)
<       WHILE BYTE{env%} OR BYTE{env%+1} OR BYTE{env%+2}
<         env$=env$+CHR$(BYTE{env%})
<         INC env%
<       WEND
<       env$=env$+CHR$(0)+CHR$(0)+CHR$(0)
---
>       ' env%=LONG{BASEPAGE+&H2C}
>       ' WHILE BYTE{env%} OR BYTE{env%+1}
>       '   env$=env$+CHR$(BYTE{env%})
>       '   INC env%
>       ' WEND
>       ' env$=env$+CHR$(0)+CHR$(0)
12457d12687
<       v_enter_cur(scr_handle%)
12460,12461c12690,12692
<       IF b$<>"TTP" AND b$<>"TOS"
<         v_exit_cur(scr_handle%)
---
>       IF b$="TTP" OR b$="TOS" OR b$="SYS"
>         v_enter_cur(scr_handle%)
>       ELSE
12472,12473c12703,12710
<       IF GEMDOS(75,0,L:V:fi$,L:V:ttp$,L:V:env$)<>0
<         ~@alrt(3,"PEXEC-Fehler: "+STR$(a%)+"  ",1,"&%$")
---
>       ' a%=GEMDOS(75,0,L:V:fi$,L:V:ttp$,L:V:env$)
>       a%=GEMDOS(75,0,L:V:fi$,L:V:ttp$,L:0)
>       IF a%<>0
>         IF a%<0
>           ~@alrt(3,"Pexec-Fehler "+STR$(a%)+"!",1," &%$ ")
>         ELSE
>           ~@alrt(3,"Programm meldet "+STR$(CARD(a%)),1," &%$ ")
>         ENDIF
12476c12713
<         IF b$="TTP"
---
>         IF b$="TTP" OR b$="TOS" OR b$="SYS"
12482c12719
<       IF b$="TTP" OR b$="TOS"
---
>       IF b$="TTP" OR b$="TOS" OR b$="SYS"
12485,12486c12722,12723
<         ~SHEL_WRITE(1,1,1,"","EXIT.PRG")
<         IF rom_version%>=&H104
---
>         ~SHEL_WRITE(1,1,1,"",ver$+".APP")
>         IF aes_version&>=&H140
12533c12770
<     ret&=(C:shell_p%(L:VARPTR(com$))) AND &HFF
---
>     ret&=CARD((C:shell_p%(L:VARPTR(com$))))
12555c12792
<   wwa%=@alrt(4,ver$+" |Der etwas andere Diskmonitor |aus dem SCHEIBENKLEISTER",4,"Kleister|SED|Hilfe|Danke")
---
>   wwa%=@alrt(4,ver$+"|Modifiziert 1995-10-20 von Rainer Seitel @ KA|Der etwas andere Diskmonitor |aus dem SCHEIBENKLEISTER",4,"Kleister|SED|Hilfe|Danke")
12570,12575c12807,12812
<   IF @alrt(2,"Ist fr heute wirklich Schlu ?",1,"Schluss|Nie")=1
<     file_is_open
<     do_exit
<   ENDIF
<   do_cursor_anz(wind%)
<   maus_off
---
>   ' IF @alrt(2,"Ist fr heute wirklich Schlu?",1," Schlu |Nie")=1
>   file_is_open
>   do_exit
>   ' ENDIF
>   ' do_cursor_anz(wind%)
>   ' maus_off
12698c12935
<         a%=(ASC(search$)+1) AND &HFF    ! Fllmuster nach Suchstring ndern !
---
>         a%=(ASC(search$)+1) AND &HFF    ! Fllmuster nach Suchstring ndern!
12740c12977
<         IF b%>0                 ! was gefunden ?
---
>         IF b%>0                 ! was gefunden?
12761c12998
<         search_lesen(sbg%-1)                   ! ab 2.Block im String lesen
---
>         search_lesen(sbg%-1)                   ! ab 2. Block im String lesen
12769c13006
<         ~@alrt(3,"Keine (weitere) |Fundstelle!",1,"Ok")
---
>         ~@alrt(3,"Keine (weitere) |Fundstelle!",1," Ok ")
12792,12793c13029,13030
<     IF lgs%+a2%>spd%-1
<       a2%=spd%-lgs%-1
---
>     IF lgs%+a2%>spd%
>       a2%=spd%-lgs%
12796c13033
<     status%=BIOS(4,2,L:a1%,a2%,lgs%,drive%)
---
>     status%=@rwabs(2,a1%,a2%,lgs%,drive%)
12843c13080
<       DEC lll%                  ! ja, mehrere Blocks gelesen...
---
>       DEC lll%                  ! ja, mehrere Blocks gelesen ...
12918c13155
<         ~@alrt(3,"Hex-Data falsch ",1,"Ok")
---
>         ~@alrt(3,"Hex-Data falsch! ",1," Ok ")
12935c13172
<           ~@alrt(3,"Dezimale Werte |zwischen 0 und 255!",1,"Ok")
---
>           ~@alrt(3,"Dezimale Werte |zwischen 0 und 255!",1," Ok ")
12950c13187
<             ~@alrt(3,"Binre Werte max. 8 Bit! ",1,"Ok")
---
>             ~@alrt(3,"Binre Werte max. 8 Bit! ",1," Ok ")
13052,13053c13289,13290
<   .| Glob. Var.: erg%,l$,scr_mem%,bps%,rom_version%,romstart%,scr_width%
<   .|     scr_height%,fonts%,neuefonts%,chk_ofls%
---
>   .| Glob. Var.: erg%,l$,scr_mem%,bps%,tos_version&,tos_start%,dos_version&
>   .|     scr_width%,scr_height%,fonts%,neuefonts%,chk_ofls%
13056d13292
<   LOCAL a$
13061d13296
<   a$=" frei"
13063,13064c13298,13299
<     out("Standard-RAM    :"+RIGHT$(l$+STR$(GEMDOS(68,L:-1,0)),10)+" Bytes"+a$)
<     out("Alternate-RAM   :"+RIGHT$(l$+STR$(GEMDOS(68,L:-1,1)),10)+" Bytes"+a$)
---
>     out("ST-RAM          :"+RIGHT$(l$+STR$(GEMDOS(68,L:-1,0)),10)+" Bytes frei")
>     out("Alternate-RAM   :"+RIGHT$(l$+STR$(GEMDOS(68,L:-1,1)),10)+" Bytes frei")
13068c13303
<   out("internes RAM    :"+RIGHT$(l$+STR$(FRE(0)),10)+" Bytes"+a$)
---
>   out("internes RAM    :"+RIGHT$(l$+STR$(FRE(0)),10)+" Bytes frei")
13072,13073c13307,13309
<   out("ROM-Version     :   "+HEX$(rom_version%))
<   out("ROM-Start       :   $"+HEX$(romstart%))
---
>   out("TOS-Version     :   "+HEX$(SHR&(tos_version&,8))+"."+HEX$(BYTE(tos_version&),2))
>   out("TOS-Start       :   $"+HEX$(tos_start%))
>   out("GEMDOS-Version  :   "+HEX$(SHR&(dos_version&,8))+"."+HEX$(BYTE(dos_version&),2))
13075c13311
<   out("Auflsung       :   "+STR$(scr_width%)+"*"+STR$(scr_height%))
---
>   out("Auflsung       :   "+STR$(scr_width%)+" * "+STR$(scr_height%))
13081c13317,13320
<     out("CHK_OFLS  installiert")
---
>     out("CHK_OFLS installiert")
>   ENDIF
>   IF GEMDOS(309,1,32)<>-32  ! Dlock(sperren, ungltiges Laufwerk) <> EINVFN
>     out("Dlock() vorhanden")
13100c13339
<       ~@alrt(1,"CRC-Prfsumme des  |markierten Blocks :|$"+a$,1,"OK")
---
>       ~@alrt(1,"CRC-Prfsumme des|markierten Blocks:|$"+a$,1," OK ")
13102c13341
<       ~@alrt(3,"Kein Block markiert !",1,"Hmmmm")
---
>       ~@alrt(3,"Kein Block markiert!",1,"Hmmmm")
13308c13547
<     IF NOT (EXIST(logbuch$))
---
>     IF NOT EXIST(logbuch$)
13489c13728
<     clr_state(h.elp%,ex_obj&,1)         ! selected ?
---
>     clr_state(h.elp%,ex_obj&,1)         ! selected?
13585c13824
<   pfad$(46)=pfad$(29)           ! frs speichern des Textes (Hi Claus...)
---
>   pfad$(46)=pfad$(29)           ! frs Speichern des Textes (Hi Claus ...)
13595c13834
<     ~@alrt(3,"Kein Fehler, keine Nachrichten",1,"Gut so")
---
>     ~@alrt(3,"Kein Fehler, keine Nachrichten.",1,"Gut so")
13782c14021
<       WHILE b%<c%       ! schon am Ende ?
---
>       WHILE b%<c%       ! schon am Ende?
13872c14111
<     erg2%=@alrt(3,"Fehlerseite ist voll",1,"Danke|Lschen")
---
>     erg2%=@alrt(3,"Fehlerseite ist voll.",1,"Danke|Lschen")
13883c14122
<   .|     clr_state,objc_update,term$,write_in_fat,alrt,write_fat,bios_block
---
>   .|     clr_state,objc_update,write_in_fat,alrt,write_fat,bios_block
13889c14128
<   cluster%=MIN(cluster%,cpd%)
---
>   cluster%=MIN(cluster%,cpd%+1)
13904,13914c14143,14146
<       IF ab%>0
<         a$=@term$(CHAR{{OB_SPEC(f.at%,fat_nr&)}})
<         cluster%=MIN(cpd%-1,VAL(a$))
<         aa%=@read_in_fat(cluster%)
<         put_char(f.at%,fat_nr&,@dec_hex_val$(aa%,6))
<         cluster%=aa%
<         aa%=@read_in_fat(cluster%)
<       ELSE
<         a$=@term$(CHAR{{OB_SPEC(f.at%,fat_nr&)}})
<         cluster%=MIN(cpd%-1,VAL(a$))
<         aa%=@read_in_fat(cluster%)
---
>       a$=CHAR{{OB_SPEC(f.at%,fat_nr&)}}
>       cluster%=MIN(cpd%+1,VAL(a$))
>       IF ab%<>0 AND aa%>=2 AND aa%<cpd%+2
>         cluster%=@read_in_fat(cluster%)
13915a14148
>       aa%=@read_in_fat(cluster%)
13917,13918c14150,14151
<       IF ab%>0
<         a$=STR$(cpd%-1)
---
>       IF ab%<>0
>         cluster%=cpd%+1
13920c14153
<         a$=@term$(CHAR{{OB_SPEC(f.at%,fat_nr&)}})
---
>         cluster%=MIN(VAL(CHAR{{OB_SPEC(f.at%,fat_nr&)}})+1,cpd%+1)
13922d14154
<       cluster%=MIN(VAL(a$)+1,cpd%-1)
13925,13926c14157,14158
<       IF ab%>0
<         a$="0"
---
>       IF ab%<>0
>         cluster%=2
13928c14160
<         a$=@term$(CHAR{{OB_SPEC(f.at%,fat_nr&)}})
---
>         cluster%=MAX(2,VAL(CHAR{{OB_SPEC(f.at%,fat_nr&)}})-1)
13930d14161
<       cluster%=MAX(0,VAL(a$)-1)
13933c14164
<       a$=@term$(CHAR{{OB_SPEC(f.at%,fwrt&)}})
---
>       a$=CHAR{{OB_SPEC(f.at%,fwrt&)}}
13935c14166
<       IF @alrt(2,"FAT zurckschreiben",0,wa$)=1
---
>       IF @alrt(2,"FAT zurckschreiben?",0,wa$)=1
13942,13943c14173,14174
<       a$=@term$(CHAR{{OB_SPEC(f.at%,fat_nr&)}})
<       cluster%=MIN(cpd%-1,VAL(a$))
---
>       a$=CHAR{{OB_SPEC(f.at%,fat_nr&)}}
>       cluster%=MIN(cpd%+1,VAL(a$))
13947,13948c14178,14179
<       a$=@term$(CHAR{{OB_SPEC(f.at%,fat_nr&)}})
<       cluster%=MIN(cpd%-1,VAL(a$))
---
>       a$=CHAR{{OB_SPEC(f.at%,fat_nr&)}}
>       cluster%=MIN(cpd%+1,VAL(a$))
13952,13953c14183,14184
<       a$=@term$(CHAR{{OB_SPEC(f.at%,fat_nr&)}})
<       cluster%=MIN(cpd%-1,VAL(a$))
---
>       a$=CHAR{{OB_SPEC(f.at%,fat_nr&)}}
>       cluster%=MIN(cpd%+1,VAL(a$))
13964,13965c14195,14196
<   a$=@term$(CHAR{{OB_SPEC(f.at%,fat_nr&)}})
<   set_cursor_in_fat(MAX(0,VAL(a$)-1))
---
>   a$=CHAR{{OB_SPEC(f.at%,fat_nr&)}}
>   set_cursor_in_fat(MAX(0,VAL(a$)))
13975c14206
<   LOCAL a$,fac$,cl%,j%,aa%,anz%
---
>   LOCAL a$,fac$,cl%,j%,anz%
13989,13990c14220,14221
<       lgs%=anf_fat2%+len_fat%
<       ~@alrt(1,"Wurzelverzeichnis ab Sektor "+STR$(lgs%)+" |fr "+STR$(len_dir%)+" Sektoren ",1,"Aha")
---
>       lgs%=anf_dir%
>       ~@alrt(1,"Wurzelverzeichnis ab Sektor "+STR$(lgs%)+" |fr "+STR$(len_dir%)+" Sektoren.",1," Aha ")
14008c14239
<         DO
---
>         REPEAT
14012d14242
<             aa%=@read_in_fat(cl%)
14014,14015c14244,14245
<             cl%=aa%
<             EXIT IF aa%>=ed%-8 OR aa%=0 OR (aa%>=cpd% AND aa%<ed%-8)
---
>             cl%=@read_in_fat(cl%)
>             EXIT IF cl%<2 OR cl%>=cpd%+2
14018,14019c14248,14251
<           EXIT IF aa%>=ed%-8 OR aa%=0
<         LOOP
---
>           IF cl%<2 OR (cl%>=cpd%+2 AND cl%<ed%-7)
>             out("Ungltiger Cluster-Eintrag "+@dec_hex_val$(cl%,7))
>           ENDIF
>         UNTIL cl%<2 OR cl%>=cpd%+2
14028c14260
<   .|     anf_dat%,hdl%
---
>   .|     anf_dat%,hdl%,buf%,bps%
14031c14263
<   .|     fat_get_leiche,fclose,write_fat,bios_block
---
>   .|     fat_get_leiche,fclose,write_fat,bios_block,lesen,fwrite2
14033c14265
<   LOCAL cc%,fterg%,fat_tst%,fu%
---
>   LOCAL cd%,fterg%,fat_tst%,fu%
14044c14276
<         ~@alrt(3,"Sammeln unbedingt auf einem|anderem Laufwerk!",1,"Ok")
---
>         ~@alrt(3,"Sammeln unbedingt auf einem|anderen Laufwerk!",1," Ok ")
14049,14050c14281,14282
<           cc%=ed%-8
<           FOR fat_tst%=2 TO cpd%
---
>           cd%=ed%-8
>           FOR fat_tst%=2 TO cpd%+1
14053c14285
<               IF aa%=cc%
---
>               IF aa%=cd%
14061,14063c14293,14296
<                   fat_get_leiche
<                   INC lgs%
<                   fat_get_leiche
---
>                   FOR lgs%=lgs% TO lgs%+spc%-1
>                     lesen
>                     fwrite2(hdl%,buf%,bps%)
>                   NEXT lgs%
14068,14070d14300
<           IF fterg%=1
<             ~@fclose(hdl%)
<           ENDIF
14072c14302
<             IF @alrt(2,STR$(fu%)+" Leichencluster gefunden.|Sollen diese Cluster |freigegeben werden?",0,"Ja|Nein")=1
---
>             IF @alrt(2,STR$(fu%)+" Leichencluster gefunden.|Sollen diese Cluster|freigegeben werden?",0,"Ja| Nein ")=1
14080a14311,14313
>       IF fterg%=1
>         ~@fclose(hdl%)
>       ENDIF
14084,14090d14316
< PROCEDURE fat_get_leiche
<   .| Glob. Var.: hdl%,buf%,bps%
<   .| Ruft auf  : lesen,fwrite2
<   .| Aufruf in : fat_test-2,
<   lesen
<   fwrite2(hdl%,buf%,bps%)
< RETURN
14098c14324
<   LOCAL i%,cl%,aa%,cc%,ex%,akt_cl%
---
>   LOCAL i%,cl%,aa%,cd%,ex%,akt_cl%
14108c14334
<     cc%=ed%-8
---
>     cd%=ed%-8
14113d14338
<         akt_cl%=1
14115c14340,14341
<         IF cl%<cpd%
---
>         IF cl%>=2 AND cl%<=cpd%+1
>           akt_cl%=1
14124d14349
<               INC akt_cl%
14126,14130c14351
<               IF aa%>=cpd% AND aa%<ed%
<                 err_inf3(cl%,"Clusternummer zu gross","Clusternummer=")
<                 aa%=cc%
<               ENDIF
<               EXIT IF fer%>=max_err% OR aa%>=cc%
---
>               EXIT IF aa%<2 OR aa%>cpd%+1
14131a14353
>               INC akt_cl%
14142c14364
<           IF (aa%=0 AND laenge%(fat_tst%)<>0)
---
>           IF aa%=0 AND laenge%(fat_tst%)<>0
14144c14366,14378
<             err_inf3(cl%,"Clustereintrag=0 in Datei "+f$,"Clusternummer=")
---
>             err_inf3(cl%,"Freier Cluster in Datei "+f$,"Clusternummer=")
>           ENDIF
>           IF aa%=1
>             f$=file$(fat_tst%)
>             err_inf3(cl%,"Clustereintrag = 1 in Datei "+f$,"Clusternummer=")
>           ENDIF
>           IF aa%>cpd%+1 AND aa%<cd%
>             f$=file$(fat_tst%)
>             err_inf3(cl%,"Clustereintrag zu gro in Datei "+f$,"Clusternummer=")
>           ENDIF
>           IF aa%=cd%
>             f$=file$(fat_tst%)
>             err_inf3(cl%,"Defekter Cluster in Datei "+f$,"Clusternummer=")
14148a14383,14386
>             err_inf3(laenge%(fat_tst%),"FAT-Belegung < Dateilnge in Datei: "+f$,"DIR-Lnge=")
>           ENDIF
>           IF ((att%(fat_tst%) AND &H18)=0) AND (akt_cl%-1)*bps%*spc%>=laenge%(fat_tst%)
>             f$=file$(fat_tst%)
14151c14389,14401
<           '
---
>         ELSE
>           IF cl%=0 AND laenge%(fat_tst%)<>0
>             f$=file$(fat_tst%)
>             err_inf3(cl%,"Kein Anfangs-Cluster obwohl Lnge > 0 in Datei "+f$,"")
>           ENDIF
>           IF cl%=1
>             f$=file$(fat_tst%)
>             err_inf3(cl%,"Anfangs-Clusternummer = 1 in Datei "+f$,"")
>           ENDIF
>           IF cl%>=cpd%+2
>             f$=file$(fat_tst%)
>             err_inf3(cl%,"Anfangs-Clusternummer zu gro in Datei "+f$,"")
>           ENDIF
14181c14431
< PROCEDURE fat_xor               ! Fat's vergleichen
---
> PROCEDURE fat_xor               ! FATs vergleichen
14191c14441
<   x%=anf_fat1%+len_fat% ! Start  der 2.FAT
---
>   x%=anf_fat1%+len_fat% ! Start  der 2. FAT
14209c14459
<     wwa%=@alrt(3,"FAT's sind verschieden!",3,"Abbruch")
---
>     wwa%=@alrt(3,"FATs sind verschieden!",3,"Abbruch")
14218c14468
<   .| Glob. Var.: abb%,erg%,drive%,total%,spc%,cluster%,a$,bpc%
---
>   .| Glob. Var.: abb%,erg%,drive%,total%,spc%,bpc%
14222c14472
<   LOCAL ab%,j%,i%,cl%
---
>   LOCAL ab%,j%,i%,cluster%,cl%,a$
14233,14234c14483,14484
<     FOR j%=9 TO 13
<       ab%=2^j%*spc%             ! Bytes/Cluster
---
>     FOR j%=9 TO 15
>       ab%=SHL(1,j%)             ! Bytes/Cluster
14243c14493
<       a$=SPACE$(50)
---
>       a$=SPACE$(47)
14246c14496
<       MID$(a$,31)=@dec_hex_val$(cluster%*ab%,8)
---
>       MID$(a$,31)=@dec_hex_val$(cluster%*ab%,10)
14256c14506
< PROCEDURE fat_leiche_12         ! Leichencluster prfen in 12 Bit FAT
---
> PROCEDURE fat_leiche_12         ! Leichencluster prfen in 12-Bit-FAT
14261c14511
<   cc%=ed%-15    ! defekt= FFF0-FFF7
---
>   cc%=ed%-15    ! defekt= FF0-FF7  !RS:BUG: nach ISO und MS-DOS nur $FF7!!!
14264c14514
<   FOR fat_tst%=2 TO cpd%
---
>   FOR fat_tst%=2 TO cpd%+1
14266c14516
<     IF EVEN(fat_tst%)=-1
---
>     IF EVEN(fat_tst%)=TRUE
14286c14536
<   LOCAL cz%,cc%,cd%,fat_tst%,aa%
---
>   LOCAL cc%,cd%,fat_tst%,aa%
14288c14538
<   cc%=ed%-15    ! defekt= FFF0-FFF7
---
>   cc%=ed%-15    ! defekt= FFF0-FFF7  !RS:BUG: nach ISO und MS-DOS nur $FFF7!!!
14290,14292c14540,14541
<   FOR fat_tst%=2 TO cpd%
<     cz%=fat_tst%*2+fatbuf%
<     aa%=BYTE{cz%}+BYTE{cz%+1}*256
---
>   FOR fat_tst%=2 TO cpd%+1
>     aa%=CARD(ROL&(CARD{fatbuf%+fat_tst%*2},8))
14315c14564
<     ON bflag%+1 GOSUB fat_leiche_12,fat_leiche_16
---
>     ON (bflag% AND 1)+1 GOSUB fat_leiche_12,fat_leiche_16
14328c14577
<   do_clr_out("")
---
>   do_clr_out("? = verklebt, V = Verwaltung, X = Leiche, D = defekt, b = belegt, . = frei")
14330c14579
<   FOR j%=0 TO cpd% STEP 64
---
>   FOR j%=0 TO cpd%+1 STEP 64
14333c14582
<     FOR i%=j% TO j%+MIN(64,cpd%-j%)
---
>     FOR i%=j% TO j%+MIN(64,cpd%+1-j%)
14335c14584
<         MID$(a$,fgs%)="B"
---
>         MID$(a$,fgs%)="b"
14344c14593
<   out("Drive : "+CHR$(drive%+65)+"   "+STR$(cpd%)+" Cluster")
---
>   out("Drive: "+CHR$(drive%+65)+"   "+STR$(cpd%)+" Cluster")
14347c14596
<   .| Glob. Var.: cok%,txt_zeile%,top%,txt_spalte%,ev_clicks&,lgs%,spc%
---
>   .| Glob. Var.: txt_zeile%,top%,txt_spalte%,ev_clicks&,lgs%,spc%
14353c14602
<   LOCAL aa%,a%,b%,cl%,i%,a$,f$,x1$,x2$,x3$
---
>   LOCAL a%,b%,cl%,klickcl%,anzcl%,i%,a$,f$,x1$,x2$,x3$
14355d14603
<   cok%=32768
14358,14372c14606,14607
<   ELSE
<     fat_graf_do
<     out_do
<     set_last(4)
<   ENDIF
<   '
<   IF ev_clicks&>1
<     lgs%=(cl%-2)*spc%+anf_dat%
<     lesen
<     wind_top(whdl&(0))
<   ENDIF
<   IF cl%<cok%
<     IF cl%>cpd%
<       out$(0)=SPACE$(wc%)
<       info_line
---
>     IF cl%>cpd%+1
>       out$(0)="? = verklebt, V = Verwaltung, X = Leiche, D = defekt, b = belegt, . = frei"
14374c14609,14616
<       IF fat%(cl%)>0
---
>       IF ev_clicks&>1
>         lgs%=(cl%-2)*spc%+anf_dat%
>         lesen
>         wind_top(whdl&(0))
>       ENDIF
>       $S%
>       SELECT fat%(cl%)
>       CASE 1 TO
14376c14618
<         IF (att%(fat%(cl%)) AND 16)>0
---
>         IF (att%(fat%(cl%)) AND 16)<>0
14379,14380c14621,14623
<         out$(0)=@dec_hex_val$(cl%,6)+" "+f$+SPACE$(MAX(0,wc%-LEN(f$)))
<         cl%=cluster%(fat%(cl%))
---
>         klickcl%=cl%
>         anzcl%=1
>         cl%=cluster%(fat%(cl%))     ! Start-Cluster
14386,14388c14629,14631
<           x1$="B"
<           x2$="B"
<           x3$="B"
---
>           x1$="b"
>           x2$="b"
>           x3$="b"
14395,14406c14638,14645
<         cl%=@read_in_fat(cl%)       ! Start Cluster
<         IF cl%<ed%-8
<           REPEAT
<             aa%=@read_in_fat(cl%)
<             IF cl%<ed%
<               a%=cl%/64
<               b%=cl%-a%*64+8
<               MID$(out$(a%+1),b%,1)=x3$
<             ENDIF
<             cl%=aa%
<           UNTIL aa%>=ed%-8
<         ENDIF
---
>         cl%=@read_in_fat(cl%)
>         WHILE cl%<=cpd%+1
>           a%=cl%/64
>           b%=cl%-a%*64+8
>           MID$(out$(a%+1),b%,1)=x3$
>           INC anzcl%
>           cl%=@read_in_fat(cl%)
>         WEND
14408,14421c14647,14657
<       ELSE
<         SELECT fat%(cl%)
<         CASE -1
<           a$="Leichencluster"
<         CASE -2
<           a$="Defekter Cluster"
<         CASE -3
<           a$="Verwaltungsbereich"
<         CASE -4
<           a$="Verklebter Cluster"
<         ENDSELECT
<         out$(0)=@dec_hex_val$(cl%,6)+" "+a$
<       ENDIF
<       do_list
---
>         out$(0)=@dec_hex_val$(klickcl%,6)+" "+f$+" ("+STR$(anzcl%)+" Cluster)"+SPACE$(MAX(0,wc%-LEN(f$)-11-LEN(STR$(anzcl%))))
>       CASE -1
>         out$(0)=@dec_hex_val$(cl%,6)+" Leichencluster"
>       CASE -2
>         out$(0)=@dec_hex_val$(cl%,6)+" Defekter Cluster"
>       CASE -3
>         out$(0)=@dec_hex_val$(cl%,6)+" Verwaltungsbereich"
>       CASE -4
>         out$(0)=@dec_hex_val$(cl%,6)+" Verklebter Cluster"
>       ENDSELECT
>       $S&
14422a14659,14663
>     do_list
>   ELSE
>     fat_graf_do
>     out_do
>     set_last(4)
14427c14668
<   .| Glob. Var.: cc%,ed%,cd%,bflag%,cpd%,cz%,fatbuf%,l$
---
>   .| Glob. Var.: cc%,ed%,cd%,bflag%,cpd%,fatbuf%,l$
14430c14671
<   LOCAL aa%,a%,i%
---
>   LOCAL aa%,a%,i%,cz%
14432c14673
<   cc%=ed%-15    ! defekt= FFF0-FFF7
---
>   cc%=ed%-15    ! defekt= FFF0-FFF7  !RS:BUG: nach ISO und MS-DOS nur $FFF7!!!
14436,14439c14677,14679
<   IF bflag%>0
<     FOR i%=2 TO cpd%
<       cz%=i%*2+fatbuf%
<       aa%=BYTE{cz%}+BYTE{cz%+1}*256
---
>   IF (bflag% AND 1)<>0
>     FOR i%=2 TO cpd%+1
>       aa%=CARD(ROL&(CARD{fatbuf%+i%*2},8))
14442c14682
<         out(l$+"Cluster:"+STR$(i%))
---
>         out(l$+"Cluster: "+STR$(i%))
14446c14686
<     FOR i%=2 TO cpd%
---
>     FOR i%=2 TO cpd%+1
14448c14688
<       IF EVEN(i%)=-1
---
>       IF EVEN(i%)=TRUE
14455c14695
<         out(l$+"Cluster:"+STR$(i%))
---
>         out(l$+"Cluster: "+STR$(i%))
14467,14469c14707,14708
<   IF bflag%=1
<     cz%=fatbuf%+clus%*2
<     RETURN BYTE{cz%}+BYTE{cz%+1}*256
---
>   IF (bflag% AND 1)<>0
>     RETURN CARD(ROL&(CARD{fatbuf%+clus%*2},8))
14484c14723
<   LOCAL cc%,fat_tst%
---
>   LOCAL cc%,fat_tst%,mediabyte|
14485a14725,14749
>   IF drive%<2   ! Media-Byte bestimmen  !RS: Bestimmung in bios_block verschieben?
>     IF tpd%=40  ! 130-mm-Disketten (5,25 in) mit 40 Spuren
>       IF sid%=1 AND spt%=9 AND len_fat%=2 AND len_dir%=4 AND spc%=1 AND cpd%=351
>         mediabyte|=&HFC
>       ELSE IF sid%=2 AND spt%=9 AND len_fat%=2 AND len_dir%=7 AND spc%=2 AND cpd%=354
>         mediabyte|=&HFD  ! Diskette ISO Typ 202
>       ELSE IF sid%=1 AND spt%=8 AND len_fat%=1 AND len_dir%=4 AND spc%=1 AND cpd%=313
>         mediabyte|=&HFE
>       ELSE IF sid%=2 AND spt%=8 AND len_fat%=1 AND len_dir%=7 AND spc%=2 AND cpd%=315
>         mediabyte|=&HFF
>       ELSE
>         mediabyte|=&HF9
>       ENDIF
>     ELSE        ! 90-mm-Disketten (3,5 in) oder 130-mm-Disketten (5,25 in) mit 80 Spuren
>       IF spt%>=18
>         mediabyte|=&HF0
>       ELSE
>         mediabyte|=&HF9
>       ENDIF
>     ENDIF
>   ELSE
>     mediabyte|=&HF8  ! Fest- oder Wechselplatte
>   ENDIF
>   write_in_fat(&HFF00 OR mediabyte|,0)  ! Media-Byte in die FAT eintragen
>   write_in_fat(&HFFFF,1)
14487c14751
<   FOR fat_tst%=2 TO cpd%
---
>   FOR fat_tst%=2 TO cpd%+1
14499,14502c14763,14764
<   IF bflag%>0
<     cz%=fatbuf%+wohin%*2
<     BYTE{cz%}=(was% AND &HFF)
<     BYTE{cz%+1}=(was% AND &HFF00)/256
---
>   IF (bflag% AND 1)<>0
>     CARD{fatbuf%+wohin%*2}=ROL&(was%,8)
14505,14507c14767,14769
<     IF EVEN(wohin%)=-1
<       BYTE{cz%+1}=(BYTE{cz%+1} AND 240)+(was% AND &HF00)/256
<       BYTE{cz%}=(was% AND 255)
---
>     IF EVEN(wohin%)=TRUE
>       BYTE{cz%+1}=(BYTE{cz%+1} AND &HF0)+(was% AND &HF00)/256
>       BYTE{cz%}=was%
14522c14784
<   x%=anf_fat1%  ! Start  der 1.FAT
---
>   x%=anf_fat1%  ! Start  der 1. FAT
14524c14786
<     status%=BIOS(4,1,L:fatbuf%,len_fat%,x%,drive%)
---
>     status%=@rwabs(1,fatbuf%,len_fat%,x%,drive%)
14526c14788
<       status%=BIOS(4,1,L:fatbuf%,len_fat%,x%,drive%)
---
>       status%=@rwabs(1,fatbuf%,len_fat%,x%,drive%)
14536c14798
<   ~@alrt(3,"Laufwerk hat nur eine FAT !",1,"Abbruch")
---
>   ~@alrt(3,"Laufwerk hat nur eine FAT!",1,"Abbruch")
14538c14800
< PROCEDURE fat_read1           ! 1.Sektor der FAT 1 einlesen
---
> PROCEDURE fat_read1           ! 1. Sektor der FAT 1 einlesen
14547c14809
< PROCEDURE fat_read2           ! 1.Sektor einer evtl. FAT 2 einlesen
---
> PROCEDURE fat_read2           ! 1. Sektor einer evtl. FAT 2 einlesen
14566c14828
<   IF bflag%=1
---
>   IF (bflag% AND 1)<>0
14575,14577c14837
<   WHILE b%>=bps%
<     SUB b%,bps%
<   WEND
---
>   b%=b% MOD bps%
14581d14840
<   xt%=b%-yt%*16+51
14583a14843,14844
>   ELSE
>     xt%=b%-yt%*16+51
14596,14597c14857
<     IF aa%<>ed%
<       aa%=MAX(2,aa%)
---
>     IF aa%>=2 AND aa%<cpd%+2
14601c14861
<       ~@alrt(3,"Keine weitere Verkettung",1,"Aha")
---
>       ~@alrt(3,"Keine weitere Verkettung.",1," Aha ")
14605c14865
<     ~@alrt(3,"* Clusterverkettung folgen *|Das geht nur mit Clustern|im Datenbereich!",1,"Aha")
---
>     ~@alrt(3,"* Clusterverkettung folgen *|Das geht nur mit Clustern|im Datenbereich!",1," Aha ")
14615c14875
<     j%=cluster%-1
---
>     j%=cluster%
14617c14877
<     WHILE @read_in_fat(j%)<>cluster%
---
>     REPEAT
14619,14620c14879,14882
<       EXIT IF j%=0
<     WEND
---
>       IF j%=1
>         j%=cpd%+1
>       ENDIF
>     UNTIL @read_in_fat(j%)=cluster% OR j%=cluster%
14622,14623c14884,14885
<     IF j%=0
<       ~@alrt(3,"Keine weitere Verkettung",1,"Aha")
---
>     IF j%=cluster%
>       ~@alrt(3,"Keine weitere Verkettung.",1," Aha ")
14630c14892
<     ~@alrt(3,"* Clusterverkettung folgen *|Das geht nur mit Clustern|im Datenbereich!",1,"Aha")
---
>     ~@alrt(3,"* Clusterverkettung folgen *|Das geht nur mit Clustern|im Datenbereich!",1," Aha ")
14652c14914
<       anf_fat2%=CARD{bpb%+10}  ! was wird hier stehen
---
>       anf_fat2%=CARD{bpb%+10}   ! Beginn der 2. FAT, bei einer FAT deren Beginn
14668,14670c14930,14935
<       anf_dir%=anf_fat2%+len_fat%
<       anf_fat1%=anf_fat2%-len_fat%
<       cpd%=MIN(cpd%,32767)
---
>       anf_dir%=anf_dat%-len_dir%
>       IF (bflag% AND 2)<>0      ! Nur eine FAT vorhanden!
>         anf_fat1%=anf_fat2%
>       ELSE
>         anf_fat1%=anf_fat2%-len_fat%
>       ENDIF
14672c14937
<       fat_size2%=len_fat%*bps%*spc%
---
>       fat_size2%=len_fat%*bps%
14675c14940
<         wwa%=@alrt(3,"FAT ist grsser als "+STR$(fat_size%)+" Bytes!|aktuelle Gre:"+STR$(fat_size2%)+" Bytes",1,wa$)
---
>         wwa%=@alrt(1,"Gre des FAT-Puffer "+STR$(fat_size%)+" Byte.|Notwendige Gre "+STR$(fat_size2%)+" Byte.|FAT-Puffer auf diese Gre anlegen?",1,"Ja| Nein ")
14677,14688c14942,14946
<           wwa%=@alrt(1,"FAT-Puffer auf diese Gre anlegen?",1,"Ja|Nein")
<           IF wwa%=1
<             ~MFREE(fatbuf%)
<             fatbuf%=MALLOC(fat_size2%)
<             IF fatbuf%=0
<               ~@alrt(3,ver$+"|Kein Speicher fr FAT!",1,"Abbruch")
<               ~MFREE(buf%)
<               do_exit
<             ENDIF
<             fat_size%=fat_size2%
<           ELSE
<             len_fat%=fat_size% DIV (bps%*spc%)
---
>           ~MFREE(fatbuf%)
>           fatbuf%=MALLOC(fat_size2%)
>           IF fatbuf%=0
>             ~@alrt(3,ver$+"|Kein Speicher fr FAT!",1,"Abbruch")
>             do_exit
14689a14948
>           fat_size%=fat_size2%
14691c14950
<           do_exit
---
>           len_fat%=fat_size% DIV bps%
14695c14954
<       status%=BIOS(4,0,L:fatbuf%,len_fat%,anf_fat2%,drive%)
---
>       status%=@rwabs(0,fatbuf%,len_fat%,anf_fat2%,drive%)
14697c14956
<         status%=BIOS(4,0,L:fatbuf%,len_fat%,anf_fat2%,drive%)
---
>         status%=@rwabs(0,fatbuf%,len_fat%,anf_fat2%,drive%)
14720,14721c14979,14980
<   IF bflag%=0
<     FOR ci%=2 TO cpd%
---
>   IF (bflag% AND 1)=0
>     FOR ci%=2 TO cpd%+1
14733c14992
<     anf%=C:utis%(&H700,L:fatbuf%,L:fatbuf%+cpd%*2,L:ed%-9)
---
>     anf%=C:utis%(&H700,L:fatbuf%,L:fatbuf%+(cpd%+1)*2,L:ed%-9)
14758c15017
<     wwa%=@alrt(2,"Verzeichnisse einlesen?",2,"Ok|Nee")
---
>     wwa%=@alrt(2,"Verzeichnisse einlesen?",2,"Ok| Nee ")
14774c15033
<     ~@alrt(3,"Vorgang abgebrochen",1,"Aha")
---
>     ~@alrt(3,"Vorgang abgebrochen.",1," Aha ")
14782d15040
< ' BUGS: Funktioniert nur mit 2 Sektoren pro Cluster
14789c15047
<   LOCAL a%,nr%,cl%,durch%,x%,y%,ogs%,clx%,lgx%,att%
---
>   LOCAL a%,nr%,cl%,durch%,x%,y%,ogs%,clx%,lgx%,att%,n%
14794c15052,15053
<     wurzel%=1
---
>     wurzel%=TRUE
>     n%=1                        ! im Wurzelverzeichnis Sektoren einzeln lesen
14796a15056
>     n%=spc%                     ! in Ordnern den ganzen Cluster lesen
14801,14802c15061,15062
<   FOR durch%=1 TO 2                     ! 1.Durchgang=alle Namen merken
<     '                                   ! 2.Durchgang Ordner auflsen
---
>   FOR durch%=1 TO 2                     ! 1. Durchgang: alle Namen merken
>     '                                   ! 2. Durchgang: Ordner auflsen
14805c15065
<     EXIT IF cluster%>cpd%
---
>     EXIT IF cluster%>cpd%+1
14808c15068
<       status%=BIOS(4,0,L:buf%,2,lgs%,drive%)    ! 2 Sektoren lesen
---
>       status%=@rwabs(0,buf%,n%,lgs%,drive%)     ! Sektor oder Cluster lesen
14818,14820d15077
<         '
<         y%=BYTE{x%}                             ! 1.Zeichen
<         '
14822a15080,15081
>         y%=BYTE{x%}                             ! 1. Zeichen
>         '
14832c15091
<             cl%=BYTE{x%+26}+BYTE{x%+27}*&H100
---
>             cl%=CARD(ROL&(CARD{x%+26},8))
14836c15095
<               IF (srep%>0 AND y%=&HE5) OR (srep%=0 AND y%<>&HE5) OR ((att% AND 16)>0 AND y%<>&HE5)
---
>               IF (srep%>0 AND y%=&HE5) OR (srep%=0 AND y%<>&HE5) OR ((att% AND 16)<>0 AND y%<>&HE5)
14840c15099
<                 sec%(total%)=lgs%+ABS(x%-buf%>=bps%)
---
>                 sec%(total%)=lgs%+(x%-buf%)/bps%
14845c15104
<               IF (att% AND 16)>0 AND y%<>&HE5  ! Ordner?
---
>               IF (att% AND 16)<>0 AND y%<>&HE5  ! Ordner?
14852c15111
<                 status%=BIOS(4,0,L:buf%,2,lgs%,drive%)
---
>                 status%=@rwabs(0,buf%,n%,lgs%,drive%)
14864c15123
<       UNTIL x%>=buf%+2*bps% OR total%>=max_files% OR abb%>0
---
>       UNTIL x%>=buf%+n%*bps% OR total%>=max_files% OR abb%>0
14866c15125
<       IF wurzel%=0
---
>       IF wurzel%=FALSE
14869,14870d15127
<       EXIT IF abb%<>0 OR cluster%<0 OR (wurzel%=0 AND cluster%=0)
<       EXIT IF cluster%>=cd% OR (cluster%>spd% AND cluster%<cc%)
14872,14874c15129,15133
<       EXIT IF (wurzel%<>0 AND lgs%>=anf_dat%-2) OR total%>=max_files%
<       IF wurzel%>0
<         ADD lgs%,2
---
>       EXIT IF abb%<>0 OR total%>=max_files%
>       EXIT IF wurzel%=FALSE AND (cluster%<2 OR cluster%>cpd%+1)
>       EXIT IF wurzel%=TRUE AND lgs%+1>=anf_dat%
>       IF wurzel%=TRUE
>         INC lgs%
14986c15245
<   ~@alrt(5,"SED Fehler: "+STR$(ERR)+" ",1,"Abbruch")
---
>   ~@alrt(5,"SED-Fehler "+STR$(ERR)+"! ",1,"Abbruch")
15014c15273
<     IF (OB_STATE(ram.konv%,distempl&) AND 1)>0
---
>     IF (OB_STATE(ram.konv%,distempl&) AND 1)<>0
15030c15289
<     ~@alrt(3,"Kann 'Templemon' nicht finden",1,"Abbruch")
---
>     ~@alrt(3,"Kann 'Templemon' nicht finden.",1,"Abbruch")
15038c15297
<     '     L:  Befehlsnummer ?
---
>     '     L:  Befehlsnummer?
15040c15299
<     '     L:  Codetabelle ?
---
>     '     L:  Codetabelle?
16204c16463
<   DIM gd$(92),xb$(87),bi$(11)
---
>   DIM gd$(92),xb$(95),bi$(11)
16220c16479
<   FOR index%=0 TO 87
---
>   FOR index%=0 TO 95
16241c16500
<   DATA EQ,,Bitblt,VC,,Textblt,VS,,Show Mouse,PL,,Hide Cursor,MI,
---
>   DATA EQ,,Bitblt,VC,,Textblt,VS,,Show Mouse,PL,,Hide Mouse,MI,
16254c16513,16515
<   DATA 45,NVMaccess,47,Metainit,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63
---
>   DATA 45,NVMaccess,47,Metainit,Metaopen,Metaclose,Metaread,Metawrite,53
>   DATA Metastatus,Metaioctl,56,57,58,Metastartaudio,Metastopaudio
>   DATA Metasetsongtime,Metagettoc,Metadiscinfo
16256a16518
>   DATA 88,89,90,91,92,93,94,VcheckMode
16260c16522
<   DATA Cauxis,Cauxos,20,21,22,23,24,Dgetdrv,Fsetdta,27,28,29,30,31
---
>   DATA Cauxis,Cauxos,Maddalt,Srealloc,22,23,24,Dgetdrv,Fsetdta,27,28,29,30,31
16265c16527
<   DATA 68,Fdup,Fforce,Dgetpath,Malloc,Mfree,Mshrink,Pexec
---
>   DATA Mxalloc,Fdup,Fforce,Dgetpath,Malloc,Mfree,Mshrink,Pexec
16320c16582
<   '             ist wichtig wegen mehr Bytes bei Sektor lesen - max 1024 ?
---
>   '             ist wichtig wegen mehr Bytes bei Sektor lesen - max 1024?
16329c16591
<     ~@alrt(3,ver$+"|Zu wenig Speicher frei! ",1,"Abbruch")
---
>     ~@alrt(3,ver$+"|Zu wenig Speicher frei!",1,"Abbruch")
16338,16339c16600,16601
<   fat_size%=64*1024
<   fatbuf%=MALLOC(fat_size%)     ! FAT max.?
---
>   fat_size%=64*1024             ! reicht fr 32766 Cluster
>   fatbuf%=MALLOC(fat_size%)
16750d17011
<   '
16754,16824d17014
< ' -------------------------------- Schnipp ---------------------------------
< ' 1227,1235d1229
< ' <         ELSE
< ' <           kling
< ' <         ENDIF
< ' <       ELSE
< ' <         IF key%>0
< ' <           ~OBJC_EDIT(tree%,edit_obj%,key%,idx&,2,idx&)  ! EDCHAR
< ' <         ENDIF
< ' <         IF (next_obj%<>0) AND ((next_obj%<>edit_obj%) OR (cont&=0))
< ' <           ~OBJC_EDIT(tree%,edit_obj%,0,idx&,3,idx&)     ! EDEND
< ' 1237a1232,1237
< ' >       IF key%>0
< ' >         ~OBJC_EDIT(tree%,edit_obj%,key%,idx&,2,idx&)  ! EDCHAR
< ' >       ENDIF
< ' >       IF (next_obj%<>0) AND ((next_obj%<>edit_obj%) OR (cont&=0))
< ' >         ~OBJC_EDIT(tree%,edit_obj%,0,idx&,3,idx&)     ! EDEND
< ' >       ENDIF
< ' -------------------------------- Schnapp ---------------------------------
< ' Diese nderung macht es mglich, da man in Dialogen auch []{} und @
< ' eingeben kann, also alles, was im Zusammenhang mit der Alternate-Taste
< ' ausgegeben wird! Das war vorher nur per Alt-Ziffernblock mglich, da bei
< ' gedrckter Alternate-Taste nur die Shortcuts berprft wurden aber kein
< ' OBJC_EDIT mehr stattfand! Das 'kling', wenn kein passender Shortcut
< ' (Underline) vorhanden war, fllt ganz weg.
< '
< ' Kommentar CB: Diese nderung hatte ich testweise eingebaut, sie fhrte
< '               aber aus irgendeinem Grund dazu, da berhaupt keine
< '               Tasten mehr in Dialogen akzeptiert wurden... 8-(
< ' -------------------------------- Schnipp ---------------------------------
< '
< ' -------------------------------- Schnipp ---------------------------------
< ' 10455d10459
< ' <           IF la%<=wzb%
< ' 10457,10459d10460
< ' <           ELSE
< ' <             pos_cursor(la%)
< ' <           ENDIF
< ' 10462d10462
< ' <       pos_cursor(0)
< ' -------------------------------- Schnapp ---------------------------------
< ' Diese nderungen in der PROC 'adresse' sollte sich Claus am besten mal
< ' anschauen, da ich nicht genau wei, was da alles passiert! Auf jeden Fall
< ' funktioniert so die Positionierung per Eingabe einer Adresse besser
< ' (Anklicken links im HEX-Fenster oder per Men)! Vorher gab es
< ' widersprchliche Befehle und berflssige Variablenzuweisungen! Totales
< ' Chaos in dieser PROC;-) Ich wei auch nicht, ob obige nderungen korrekt
< ' sind!
< '
< ' Kommentar CB: Die Prozedur ist mir auch noch etwas suspekt, daher
< '               habe ich diese nderung zurckgestellt, zumal sie
< '               mir auch keinen konkreten Fehler zu beheben scheint.
< ' -------------------------------- Schnipp ---------------------------------
< ' 12220a12225
< ' >   LOCAL klickcl%,anzcl%,f_out$
< ' 12246c12251
< ' <         out$(0)=@dec_hex_val$(cl%,6)+" "+f$+SPACE$(MAX(0,wc%-LEN(f$)))
< ' ---
< ' >         klickcl%=cl%
< ' 12261a12267
< ' >         anzcl%=1
< ' 12269a12276
< ' >               INC anzcl%
< ' 12274a12282,12283
< ' >         f_out$=@pfad_format$(f$,52)
< ' >         out$(0)=@dec_hex_val$(klickcl%,6)+" "+f_out$+" ("+STR$(anzcl%)+"
< ' Cluster)"+SPACE$(MAX(0,wc%-LEN(f_out$)-11-LEN(STR$(anzcl%))))
< ' -------------------------------- Schnapp ---------------------------------
< ' Beim Klicken in die graphische FAT-bersicht, wird jetzt hinter dem
< ' Datei-(oder Ordner-)namen auch die Anzahl der belegten Cluster in der
< ' Infozeile angegzeigt!
16842c17032
< '        IF lgs%>len_fat%*2                ! woanders = DIR ?
---
> '        IF lgs%>len_fat%*2                ! woanders = DIR?
16856c17046
< '        IF lgs%>len_fat%*2                ! woanders = DIR ?
---
> '        IF lgs%>len_fat%*2                ! woanders = DIR?
16872,16873c17062
< ' +             alrt_text$=alrt_text$+"|Dateiattribute: %"+BIN$(file_att|,6)+" =
< ' "
---
> ' +             alrt_text$=alrt_text$+"|Dateiattribute: %"+BIN$(file_att|,6)+" = "
16894,16896c17083
< ' +
< ' file_len=BYTE{buf%+a%+28}+BYTE{buf%+a%+29}*&H100+BYTE{buf%+a%+30}*&H10000+BYTE{
< ' buf%+a%+31}*&H1000000
---
> ' +             file_len=BYTE{buf%+a%+28}+BYTE{buf%+a%+29}*&H100+BYTE{buf%+a%+30}*&H10000+BYTE{buf%+a%+31}*&H1000000
16899c17086
< ' +             ~@alrt(1,alrt_text$,1,"OK")
---
> ' +             ~@alrt(1,alrt_text$,1," OK ")
16907,16908c17094
< ' +             IF @alrt(1,"Cluster Nr. "+STR$(cl%)+"|existiert
< ' nicht!",1,"Root-Dir|Abbruch")=1
---
> ' +             IF @alrt(1,"Cluster Nr. "+STR$(cl%)+"|existiert nicht!",1,"Root-Dir|Abbruch")=1
