*Haben Sie nur ein Laufwerk? Oder haben Sie sehr viele SIGNUM-ZeichensĂ€tze, die den Rahmen einer Diskette sprengen? Dann kennen Sie das Problem: Weder SIGNUM noch die Druckerprogramme nehmen auf Ihre Hardwarekonfiguration RĂŒcksicht! Nach dem Laden der Programme klicken Sie ein .SDO-File zum Bearbeiten oder zum Drucken an, und sofort versucht SIGNUM, die passenden CHSETs nachzuladen.
Wird ein Zeichensatz nicht gefunden, ist der Vorgang erstmal zu Ende: SIGNUM lĂ€Ăt Ihnen keine Chance, eine andere Diskette einzulegen und die fehlenden ZeichensĂ€tze dort nachzuallozieren.
Bleibt nur die Möglichkeit, alle benötigten ZeichensĂ€tze in eine RAM-Disk zu kopieren (und am besten auch die *.SDO-Files, denn auf der SIGNUM-Programmdiskette haben die ohnehin nichts verloren). Sofern Sie nicht ganz furchtbar lange Dokumente bearbeiten wollen, kommen Sie mit dieser Methode ganz gut hin: Bei 1 MB RAM und TOS im ROM lassen sich im allgemeinen gute 350 kB fĂŒr eine RAM-Disk abzweigen, ohne daĂ SIGNUM in Verlegenheit kommt.
Die RAM-Disk-Methode wird mit Initfont wirksam unterstĂŒtzt. Nachdem Sie den Kennbuchstaben Ihres RAM-Disk-ââLaufwerksâ eingegeben haben (zulĂ€ssig: C bis H), können Sie Ihre aktuellen *.SDO-Files per Fileselectorbox auswĂ€hlen und dabei auch beliebig die Disketten wechseln: Alles wird zunĂ€chst in die RAM-Disk kopiert; gleichzeitig werden die *.SDO-Files in der RAM-Disk auf die erforderlichen ZeichensĂ€tze geprĂŒft.
Den ersten Teil der Aktion beenden Sie, indem Sie in der Fileselectorbox auf ABBRUCH klicken.
Im 2. Schritt werden Sie gefragt, ob Sie nur edieren oder nur drucken oder edieren UND drucken wollen; auĂerdem können Sie angeben, welche Auflösung Ihr Drucker haben soll (9 oder 24 Nadeln). Dann erhalten Sie wieder eine Fileselectorbox (und wieder die Möglichkeit zu mehrfachem Diskettenwechsel) und können nun die benötigten ZeichensĂ€tze allozieren. Dazu genĂŒgt es, ein passendes Directory zu öffnen und auf âOKâ zu klicken: Das Directory wird dann automatisch durchsucht, und die gefundenen ZeichensĂ€tze werden in die RAM-Disk kopiert.
Parallel dazu werden Ihnen die noch fehlenden ZeichensĂ€tze angezeigt. Nachdem alle ZeichensĂ€tze gefunden wurden, ist Schritt 2 zu Ende; Sie können die Aktion aber auch vorzeitig mit âABBRUCHâ in der Fileselectorbox abschlieĂen.
Wenn Sie âEdierenâ angemeldet haben, erhalten Sie in Schritt 3 noch die Möglichkeit zur Auswahl weiterer ZeichensĂ€tze. Diese mĂŒssen Sie dann einzeln anklicken, wobei eine Auswahl eines *.E24-Files automatisch dafĂŒr sorgt, daĂ das passende *.P9- bzw. *.P24-File auch gesucht wird, sofern Sie âEdieren und Druckenâ gewĂŒnscht hatten. Schritt 3 wird wiederum mit âABBRUCHâ in der Fileselectorbox beendet; ggf. fragt Initfont in einem 4. Schritt (entspricht Schritt 2) noch die nicht gefundenen DruckerzeichensĂ€tze ab.
Als Quelldirectory darf in allen FÀllen auch das Hauptdirectory der RAM-Disk angegeben werden, obwohl es gleichzeitig Zieldirectory ist; es entfÀllt dann lediglich der Kopiervorgang. So kann z.B. auch ein *.SDO-File, das bereits in die RAM-Disk kopiert wurde, nachtrÀglich seine ZeichensÀtze anfordern.
Der wesentliche Vorteil bei der Sache ist also die Untersuchung der *.SDO-Files auf die dort verlangten ZeichensĂ€tze (alles andere könnte man auch vom Desktop aus erledigen). AbschlieĂend mĂŒssen Sie nur noch die Programmdiskette (wieder) einlegen und können mit der Bearbeitung loslegen.
Wichtig: Teilen Sie SIGNUM und dem Druckprogramm mit, daà die ZeichensÀtze sich in der RAM-Disk befinden!
Sie können das Ganze auch noch weiter vereinfachen, indem Sie diesem Initfont.dok eine Zeile wie z.B.
D24
voranstellen, was bedeutet: Sie verwenden einen 24-Nadel-Drucker, und Ihre RAM-Disk ist (z.B. per AUTO-Ordner) als Laufwerk D installiert. Initfont fragt dann diese Parameter nicht mehr interaktiv ab. Und falls Sie das Initfont.dok aus PlatzgrĂŒnden nicht auf der gleichen Diskette wie Initfont aufbewahren wollen, reicht es auch aus, wenn Sie nur diese eine Steuerzeile in ein Initfont.dok oder Initfont.par schreiben und neben Initfont ablegen. Das Programm ĂŒbernimmt auf Wunsch auch selbst das Erstellen von Initfont.par, sofern in -.PAR oder -.DOK nicht alle Informationen gefunden wurden, und sofern Sie âDruckenâ angemeldet haben.
Es war zu wĂŒnschen, daĂ in einer spĂ€teren SIGNUM-Ver-sion die Möglichkeit zum Nachallozieren von ZeichensĂ€tzen eingebaut wĂŒrde: SchlieĂlich hat ja nicht jeder eine Harddisk.
Auflisten von ZeichensÀtzen
Wer einen Haufen SIGNUM-ZeichensĂ€tze sein eigen nennt, verliert bald den Ăberblick. Listfont schafft Abhilfe: Es erstellt unter dem Namen Listfont.dat (oder einem anderen frei wĂ€hlbaren Namen) eine Tabelle Ihrer sĂ€mtlichen ZeichensĂ€tze, sĂ€uberlich sortiert nach *.E24-, *.P24- und *.P9-Files.
Nach dem Programmstart legen Sie einfach eine Font-Diskette ein, öffnen ein Directory mit SIGNUM-ZeichensĂ€tzen und klicken auf OK (ob Sie ein einzelnes File auswĂ€hlen oder nicht, spielt keine Rolle). Dieses Verfahren können Sie mit all Ihren Disketten, Harddisk-Partitions, Haupt- und Subdirectories wiederholen; sobald Sie ABBRUCH anklicken, wird die Liste erzeugt und steht Ihnen zur Weiterverarbeitung als File zur VerfĂŒgung.
Bleibt noch zu sagen, Initfont und Listfont wurden beide unter OMIKRON.BASIC programmiert und compiliert.
'
' INITFONT.PRG- SIGNUM-ZeichensÀtze und -Dokumente
' auf RAM-Disk initialisieren
' OMIKRON.BASIC / Cutlib: NNN
'
' MID$ (A$,1,X)=B$ lÀuft im Compilat nicht, ist
' daher durch A$= LEFT$(B$,X)+MID$(A$,X+1) ersetzt.
'
' I$=INPUT$(Anzahl,Dateinummer) scheitert an einzu-
' lesenden CHR$(26), ist also fĂŒr Datei-
' Untersuchungen ungeeignet. Es wurde durch eine
' entsprechende Subroutine (PROC Fread: Einlesen
' ĂŒber GEMDOS-Aufrufe) ersetzt.
'
PRINT CHR$(27);"f";CHR$(7);:Header("INITFONT.PRG")
Quellpfad$=FN Act_Pfad$:Editflag%=0:Drucker%=0:Aktion_Wahl
Rampfad$="":Chsets_Params: IF Drucker%=-1 OR Rampfad$="" THEN Params_Flag%=-1
IF Drucker%=-1 THEN Drucker_Wahl
IF Rampfad$="" THEN Rampfad_Wahl
IF Params_Flag% THEN Set_Params
Sdo$="":Sdo_Wahl: IF LEN(Sdo$) THEN Sdo_Array: Chsets_Alloc
Sdo$="": IF Editflag% THEN Edit_Alloc
Editflag%=0:IF LEN(Sdo$) THEN Sdo_Array:Chsets_Alloc
CLS : END
'
DEF FN Act_Pfad$
LOCAL Act_Pfad$,Buf,Laufwerk
GEMDOS (Laufwerk,25):Act_Pfad$= CHR$(0)*64:Buf= FRE("")
Buf= LPEEK( SEGPTR +28)+ LPEEK( VARPTR(Act_Pfad$))
GEMDOS (,71, HIGH(Buf), LOW(Buf),0):Buf=INSTR(Act_Pfad$, CHR$(0))
IF Buf>1 THEN Act_Pfad$= LEFT$(Act_Pfad$,Buf-1) ELSE Act_Pfad$=""
RETURN CHR$(Laufwerk+65)+":"+Act_Pfad$+"\"
'
DEF PROC Aktion_Wahl
LOCAL A%, A$=" INITFONT.PRG| "+CHR$(189)+"1988 by Ingo H. Dietrich|"
A$=A$+"---------------| Bitte Aktionen auswÀhlen:"
Alert(0,A$,3,"EDIT|DRUCK| BEIDES ",A%)
IF A%=1 OR A%=3 THEN Editflag%=-1
IF A%>1 THEN Drucker%=-1
RETURN
'
DEF PROC Alert (Icon%,Boxtext$,Defbutton%,Buttontext$,R Backvar%)
LOCAL Alert$="["+CHR$(48+Icon%)+"]["+Boxtext$+"]["+Buttontext$+"]"
MOUSEON : FORM_ALERT (Defbutton%, Alert$, Backvar%):MOUSEOFF : WAIT .05
RETURN
'
DEF PROC Chsets_Alloc
LOCAL Chset$,N%,Ok%,Z%
REPEAT
Header("Ăffnen Sie ein Directory, das passende CHSETS enthĂ€lt:")
Chsets_Table
Quellpfad$=Quellpfad$+"*.*":Filesel(Quellpfad$,Chset$,Ok%)
IF NOT Ok% THEN EXIT
FOR Z%=0 TO Sdo%
Chset$=Quellpfad$+Sdo$(Z%)
IF FN Exist(Chset$) THEN Kopiere(Chset$): Sdo$(Z%)="9"*13
NEXT Z%
SORT Sdo$(0):N%=-1
FOR Z%=0 TO Sdo%
IF Sdo$(Z%)<>"9"*13 THEN N%=N%+1
NEXT Z%
Sdo%=N%
UNTIL Sdo%=-1
RETURN
'
DEF PROC Chsets_Params
LOCAL I$="",I1$
IF FN Exist(Quellpfad$+"INITFONT.PAR") THEN
OPEN "I",16,Quellpfad$+"INITFONT.PAR": LINE INPUT #16,I$: CLOSE 16
ELSE
IF FN Exist(Quellpfad$+"INITFONT.DOK") THEN
OPEN "I",16,Quellpfad$+"INITFONT.DOK": LINE INPUT #16,I$: CLOSE 16
ENDIF
ENDIF
IF LEN(I$) THEN
IF LEN(I$)=2 OR LEN(I$)=3 THEN
I1$= LEFT$(I$,1)
IF I1$>"B" AND I1$<"I" THEN
Rampfad$=I1$+":\"
IF Drucker%=-1 THEN
I1$= MID$(I$,2)
IF VAL(I1$)=9 THEN Drucker%=9
IF VAL(I1$)=24 THEN Drucker%=24
ENDIF
ENDIF
ENDIF
ENDIF
RETURN
'
DEF PROC Chsets_Table
LOCAL C$,Z%
FOR Z%=0 TO 54
IF Z%>Sdo% THEN C$="" ELSE C$=Sdo$(Z%)
C$= LEFT$(C$+" "*12,12) : PRINT @(2*(Z%\5)+2,14*(Z% MOD 5)+5);C$
NEXT Z%
IF Sdo%>54 THEN
Z%=Sdo%-54
IF Z%=1 THEN
S$=" ... und 1 weiterer Zeichensatz ... "
ELSE
S$ = " ... und" + STR$(Z%) +" weitere ZeichensÀtze ... "
ENDIF
PRINT @(24,39- FIX( LEN(S$)/2));S$;@(0,0)
ENDIF
RETURN
'
DEF PROC Drucker_Wahl
LOCAL A%
Alert (2," Wieviele Nadeln| hat Ihr Drucker?|",0,"9| 24 ",A%)
Drucker%=15*A%-6
RETURN
'
DEF PROC Edit_Alloc
LOCAL Alert$,Chset$,Ext$,F$,Alert%,L%,Ok%
Header("WĂ€hlen Sie weitere ZeichensĂ€tze fĂŒr den Editor:")
REPEAT
Quellpfad$=Quellpfad$+"*.E24":Filesel(Quellpfad$,Chset$,Ok%)
IF NOT Ok% THEN EXIT
Chset$=Quellpfad$+Chset$
IF INSTR(Chset$,".E24")= LEN(Chset$)-3 THEN
L%=FN Exist_Lof(Chset$)
IF L% THEN
Alert%=1:F$= RIGHT$(Chset$,INSTR(MIRROR$(Chset$),"\")-1)
IF FN Pfad$(Chset$)<>Rampfad$ THEN
IF FN Exist(Rampfad$+F$) THEN
Alert$=F$+" gibt es auf der|Ramdisk schon!| |Trotzdem kopieren?"
Alert(3,Alert$,2,"JA| NEIN ",Alert%)
ENDIF
ENDIF
IF Alert%=1 THEN
Kopiere(Chset$)
IF Drucker% THEN
Ext$= STR$(Drucker%):Ext$="P"+MID$(Ext$,2)
Chset$= LEFT$(Chset$,LEN(Chset$)-3)+Ext$
F$= RIGHT$(Chset$, INSTR(MIRROR$(Chset$),"\")-1)
IF NOT FN Exist(Rampfad$+F$) THEN
IF FN Exist(Chset$) THEN
Kopiere(Chset$)
ELSE
Sdo$=Sdo$+ LEFT$(F$, INSTR (F$,".")-1)+ CHR$(0)
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
Fehler("Quellfile existiert nicht| oder enthÀlt Null Bytes| |")
ENDIF
ELSE
Fehler(" Es sind nur | *.E24-Files| zulÀssig !!|")
ENDIF
UNTIL 0
RETURN
'
DEF FN Exist (F$)
LOCAL E%: OPEN "F",16,F$,1: GET 16,1:E%= NOT EOF(16): CLOSE 16
RETURN E%
'
DEF FN Exist_Lof(F$)
LOCAL A,L,Nr: IF NOT FN Exist(F$)THEN RETURN 0
F$=F$+ CHR$(0):A= FRE(""):A= LPEEK( SEGPTR +28)+LPEEK( VARPTR(F$))
GEMDOS (Nr,61, HIGH(A), LOW(A),0): GEMDOS (L, 66,0,0,Nr,2): GEMDOS (A,62,Nr)
RETURN L
'
DEF PROC Fehler(A$): LOCAL A%: PRINT CHR$(7);:Alert(3,A$,1," AHA ",A%): RETURN
'
DEF PROC Filesei(R Pfad$,R Name$,R Ok%)
LOCAL Bild$,Laufwerk$= LEFT$(Pfad$,2):Name$=""
Sget(Bild$): MOUSEON : FILESELECT (Pfad$,Name$,Ok%): MOUSEOFF :Sput(Bild$)
WAIT .05: IF Pfad$="" THEN Pfad$="\"
IF LEFT$(Pfad$,1)="\" THEN Pfad$=Laufwerk$+Pfad$
Pfad$=FN Pfad$(Pfad$):Ok%=-Ok%
RETURN
'
DEF FN Fread$(L,F$)
LOCAL A,Dummy,Nr,Fread$= CHR$(0)*L
F$=F$+ CHR$(0):A= FRE(""):A= LPEEK( SEGPTR +28)+ LPEEK( VARPTR(F$))
GEMDOS (Nr,61, HIGH(A), LOW(A),0)
A= FRE(""):A= LPEEK( SEGPTR +28)+ LPEEK( VARPTR(Fread$))
GEMDOS (Dummy,63,Nr, HIGH(L), LOW(L), HIGH(A), LOW(A)): GEMDOS (Dummy,62,Nr)
RETURN Fread$
'
DEF PROC Header(H$)
FILL COLOR =1: FILL STYLE =2,4: PBOX 0,17 TO 639,399
FILL COLOR =0: PBOX 0,0 TO 639,16
TEXT HEIGHT =4: TEXT 550,13,"OMIKRON.BASIC"
PRINT @(0,0); TAB (39- FIX( LEN(H$)/2));H$;
RETURN
'
DEF PROC Kopiere(F$)
IF FN Pfad$ (F$)ORampfad$ THEN COPY F$ TO Rampfad$
RETURN
'
DEF FN Pfad$(F$)= LEFT$(F$, LEN(F$)- INSTR( MIRROR$(F$),"\"))+"\"
'
DEF PROC Rampfad_Wahl
LOCAL Drvmap,A%,B%,A$=" Wo steckt Ihre Ramdisk ? | ",B$
REPEAT
Alert(2,A$,0,"C,D,E|F,G,H|ABBRUCH",A%)
IF A%=3 THEN CLS : END
IF A%=1 THEN B$=" C: |D:|E:"
ELSE B$=" F: |G:|H:"
Alert(2,A$,0,B$,B%):B%=3*A%+B%-2:BIOS (Drvmap,10)
IF BIT(B%,Drvmap)THEN EXIT ELSE PRINT CHR$(7);
UNTIL 0
Rampfad$= CHR$(65+B%)+":\"
RETURN
'
DEF PROC Sdo_Array
LOCAL P%=-1,Z%,Ext$,Chset$
FOR Z%=1 TO LEN(Sdo$)
IF MID$(Sdo$,Z%,1)= CHR$(0) THEN P%=P%+1
NEXT Z%
IF Editflag% AND Drucker% THEN Sdo%=2*P%+1 ELSE Sdo%=P%
DIM Sdo$ ( MAX(Sdo_Bak%, Sdo%) ) : IF Sdo_Bak%=0 THEN Sdo_Bak%=Sdo%
FOR Z%=0 TO Sdo% : Sdo$ (Z%) ="9"*13 :NEXT Z% : Z%=-1
REPEAT
P%= INSTR(Sdo$, CHR$(0)):Z%=Z%+1:Chset$= LEFT$(Sdo$,P%-1)
IF Drucker% THEN
Ext$= STR$(Drucker%):Ext$="P"+MID$ (Ext$,2) :Sdo$(Z%)=Chset$+"."+Ext$
IF Editflag% THEN Z%=Z%+1:Sdo$(Z%)=Chset$+".E24"
ELSE
Sdo$(Z%)=Chset$+".E24"
ENDIF
IF P%= LEN(Sdo$) THEN EXIT ELSE Sdo$=MID$(Sdo$,P%+1)
UNTIL 0
SORT Sdo$(0):Sdo$=Sdo$(0)+ CHR$(0)
FOR Z%=1 TO Sdo%
IF Sdo$(Z%)<>Sdo$(Z%-1) THEN Sdo$=Sdo$+Sdo$(Z%)+ CHR$(0)
NEXT Z%
FOR Z%=1 TO Sdo% : Sdo$(Z%)="9"*13:NEXT Z%: Z%=-1
REPEAT
P%= INSTR(Sdo$, CHR$(0)) :Z%=Z%+1:Sdo$(Z%)=LEFT$(Sdo$,P%-1)
IF P%= LEN(Sdo$) THEN Sdo%=Z%: EXIT
Sdo$= MID$(Sdo$,P%+1)
UNTIL 0
RETURN
'
DEF PROC Sdo_Wahl
LOCAL Alert$,F$,F$,P$,S$,S1$,Alert%,L%,P%,P1%,Z%
Header("Welche *.SDO-Dateien wollen Sie bearbeiten?")
REPEAT
P$=Quellpfad$+"*.SDO":Filesel(P$,F$,Okflag%): IF NOT Okflag% THEN EXIT
IF INSTR(F$,".SDO")= LEN(F$)-3 THEN
Alert%=1
IF FN Pfad$(F$)<>Rampfad$ THEN
IF FN Exist(Rampfad$+F$) THEN
Alert$=F$+" gibt es auf der|Ramdisk schon!| |Trotzdem kopieren?"
Alert(3,Alert$,2,"JA| NEIN ",Alert%)
ENDIF
ENDIF
ELSE
Alert%=0:Fehler(" Es sind nur | *.SDO-Files| zulÀssig !!|")
ENDIF
IF Alert%=1 THEN
IF LEN(F$) THEN
F$=P$+F$:L%=FN Exist_Lof(F$)
IF L% THEN
L%= MIN(512,L%):S$=FN Fread$(L%,F$)
P%= INSTR(S$,"cset"):P1%=INSTR(S$,"sysp")
IF P% AND P1%>P%+17 THEN
P%=P%+8:P1%=P%+10*((P1%-P%)\10-1)
FOR Z%=P% TO P1% STEP 10
S1$= MID$ (S$,Z%,8):P%= INSTR(S1$,CHR$(0))
IF P%<>1 THEN
IF P%>1 THEN S1$=LEFT$(S1$,P%-1)
Sdo$=Sdo$+S1$+ CHR$(0)
ENDIF
NEXT Z%
Kopiere(F$):Quellpfad$=P$
ELSE
Fehler(" Quellfile ist kein | Signum-Dokument !!| |")
ENDIF
ELSE
Fehler("Quellfile existiert nicht| oder enthÀlt Null Bytes| |")
ENDIF
ENDIF
ENDIF
UNTIL 0
RETURN
'
DEF PROC Set_Params
LOCAL A%,A$=" Sollen die Defaults fĂŒr| Ramdisk und Printer als|"
A$=A$+"INITFONT.PAR abgelegt werden ?":Alert (2,A$, 1, "JA | NEIN ",A%)
IF A%=2 THEN RETURN
A$=STR$(Drucker%):A$=LEFT$(Rampfad$,1)+MID$(A$,2)
OPEN "O",16,Quellpfad$+"INITFONT.PAR": PRINT #16, A$: CLOSE 16
RETURN
'
DEF PROC Sget(R B$)
LOCAL B,S:B$= CHR$(0)*32000: IF S_Init=0 THEN S_Init
XBIOS (B,3):S= FRE(""):S= LPEEK( SEGPTR +28)+ LPEEK( VARPTR(B$))
CALL S_Init( HIGH(B), LOW(B), HIGH(S), LOW(S))
RETURN
'
DEF PROC Sput(B$)
LOCAL B,S: XBIOS (B,3):S= FRE(""):S= LPEEK ( SEGPTR +28)+ LPEEK( VARPTR(B$))
CALL S_Init( HIGH(S), LOW(S), HIGH(B), LOW(B))
RETURN
'
DEF PROC S_Init
LOCAL B%,Z%:S_Init= MEMORY(40)
FOR Z%=0 TO 21: READ B%: POKE S_Init+Z%, B%: NEXT Z%
RETURN
DATA 32,111,0,4,34,111,0,8,32,60,0,0,31,63,34,216,81,200,255,252,78,117
Initfont-Programm
' LISTFONT.PRG - Erzeugen einer Liste sÀmtlicher
' verfĂŒgbarer SIGNUM-Fonts
' OMIKRON.BASIC / Cutlib: NNN
'
GEMDOS (Z%,25):Laufwerk$= CHR$(65+Z%)+":\"
PRINT CHR$(27);"b"; CHR$(0); CHR$(27);"c";CHR$(15); CHR$(27);"f";:Desktop
Info
Chsets$=""
REPEAT
Ordner(Laufwerk$,Pfad$):Moment
IF Pfad$="" THEN EXIT
Chsets(Pfad$,Chsets$):Moment
UNTIL FN Nochmal%=0
Moment
IF Chsets$="" THEN Warnix:Ausgang: END
Sortieren(Chsets$,Anz_Sets%): REM (R Chsets$(Anz_Sets%))
Diverse(Anz_Div%): REM (R Diverse$(Anz_Div%+1,3))
Formate
Zielfile(Laufwerk$,Zielfile$)
IF LEN(Zielfile$) THEN Moment:Liste_Schreiben(Zielfile$)
Ausgang: END
'
DEF PROC Ausgang
PRINT CHR$(27);"b"; CHR$(15); CHR$(27);"c";CHR$(0);: CLS
RETURN
'
DEF PROC Chsets(Pfad$,R Chsets$)
LOCAL Attribut$,Dateiname$,Extender$,Punkt%
OPEN "F",1,Pfad$+"*.*",63
REPEAT
GET 1,1
IF EOF(1) THEN EXIT
FIELD 1,21,1 AS Attribut$,8,14 AS Dateiname$
Dateiname$= LEFT$(Dateiname$, INSTR(Dateiname$,CHR$(0))-1)
IF ASC(Attribut$)<4 THEN
IF Dateiname$<>"." AND Dateiname$<>".." THEN
Punkt%= INSTR(Dateiname$,".")
IF Punkt%>0 AND Punkt%<LEN(Dateiname$) THEN
Extender$= MID$(Dateiname$,Punkt%+1)
IF Extender$="E24" OR Extender$="P24" OR Extender$="P9" THEN
Chsets$=Chsets$+Dateiname$+ CHR$(0)
ENDIF
ENDIF
ENDIF
ENDIF
UNTIL 0
CLOSE 1
RETURN
'
DEF PROC Center(Center$)
PRINT " "* FIX(39- LEN(Center$)/2);Center$
RETURN
'
DEF PROC Desktop: CLS :Headline("LISTFONT.PRG"): RETURN
'
DEF PROC Diverse(R D%)
LOCAL D$,D1$,Z%,Z1%,Z2%
D%=0
FOR Z%=1 TO Anz_Sets%
D$= LEFT$(Chsets$(Z%), INSTR(Chsets$(Z%),"."))
D1$= LEFT$(Chsets$(Z%-1), INSTR(Chsets$(Z%1),".")
IF D$<>D1$ THEN D%=D%+1
NEXT Z%
DIM Diverse$(D%+1,3)
Diverse$(0,0)="Zeichensatz":Diverse$(0,1)="E24"
Diverse$(0,2)="P24":Diverse$(0,3)="P9"
FOR Z%=1 TO D%
FOR Z1%=1 TO 3
Diverse$(Z%,Z1%)="nein"
NEXT Z1%
NEXT Z%
Z1%=0
FOR Z%=1 TO Anz_Sets%
D$= LEFT$(Chsets$(Z%), INSTR(Chsets$(Z%),"."))
D1$= LEFT$(Chsets$(Z%-1), INSTR(Chsets$(Z%-1), "."))
IF D$<>D1$ THEN
Z1%=Z1%+1
Diverse$(Z1%,0)= LEFT$(D$, LEN(D$)-1)
ENDIF
D1$ = MID$(Chsets$(Z%), INSTR(Chsets$(Z%),".")+1)
FOR Z2%=1 TO 3
IF D1$=Diverse$(0,Z2%) THEN
Diverse$(Z1%,Z2%)="ja"
ENDIF
NEXT Z2%
NEXT Z%
FOR Z%=1 TO 3
Z1%=0
FOR Z2%=1 TO D%
IF Diverse$(Z2%,Z%)="ja" THEN Z1%=Z1%+1
NEXT Z2%
D$= STR$(Z1%):Diverse$(D%+1,Z%)= RIGHT$(D$, LEN(D$)-1)
NEXT Z%
D$= STR$(D%):Diverse$(D%+1,0)= RIGHT$(D$,LEN(D$)-1)
RETURN
'
DEF PROC Formate
LOCAL Z%,Z1
FOR Z%=0 TO Anz_Div%+1
Diverse$(Z%,0)=LEFT$(Diverse$(Z%,0)+" "*14,14)
FOR Z1%=1 TO 2
Diverse$(Z%,Z1%)= LEFT$(Diverse$(Z%,Z1%)+" "*8,8)
NEXT Z1%
Diverse$(Z%,3)= LEFT$(Diverse$(Z%,3)+" "*4,4)
NEXT Z%
RETURN
'
DEF PROC Headline(Headline$): PRINT 0 (0,0); :Center(Headline$) : RETURN
'
DEF PROC Info
LOCAL Z%,D$
PRINT @(2,0);
REPEAT
READ D$
Center(D$)
UNTIL D$=""
D$ = INPUT$(1)
RETURN
'
DATA "erzeugt das Inhaltsverzeichnis Ihrer SIGNUM-ZeichensÀtze als File, "
DATA "also zum Ansehen, Ausdrucken, Weiterverarbeiten mit SIGNUM usw. "
DATA "Es können nacheinander mehrere beliebige Directories zum Durchsuchen"
DATA "angemeldet werden; LISTFONT.PRG ordnet alle gefundenen Files mit Ex-"
DATA "tender auf *.E24, *.P24 oder *.P9 alphabetisch und unterdrĂŒckt Dop-"
DATA "pelnennungen. Es wird eine Tabelle folgender Art erzeugt: "
DATA "Zeichensatz E24 P24 P9 "," "
DATA "TIMES ja ja nein"," "," "," "
DATA "LISTFONT.PRG wurde unter OMIKRON.BASIC erstellt und compiliert."
DATA "Ingo H. Dietrich 30.04.1988"
DATA " "," "," "," "," weiter mit einer beliebigen Taste ...",""
'
DEF PROC Liste_Schreiben(Zielfile$)
LOCAL D$,Strich$="-"*34,Z%,Z1%
OPEN "O",1,Zielfile$
PRINT #1," "*8+"AufStellung: SIGNUM ZeichensÀtze": PRINT #1
FOR Z%=0 TO Anz_Div%
D$=" "
FOR Z1%=0 TO 3
D$=D$+Diverse$(Z%,Z1%)
NEXT Z1%
PRINT #1," "*8+D$
IF Z% MOD 5=0 THEN PRINT #1," "*8+Strich$
NEXT Z%
IF Z% MOD 5<>1 THEN PRINT #1," "*8+Strich$
D$=" "
FOR Z1%=0 TO 3
D$=D$+Diverse$(Anz_Div%+1,Z1%)
NEXT Z1%
PRINT #1," "*8+D$: PRINT #1
PRINT #1," "*8+"... erzeugt mit LISTFONT.PRG"
PRINT #1," "*8+" von Ingo H. Dietrich"
CLOSE 1
RETURN
'
DEF PROC Moment
Desktop: PRINT 0 (12,0);:Center("... einen Moment bitte ...")
RETURN
'
DEF FN Nochmal%
LOCAL Alert$="[2][ Soll noch ein Directory | untersucht werden ?| | "
Alert$=Alert$+"( ggf. Diskette wechseln ! )][JA| NEIN ]"
Desktop
MOUSEON : FORM_ALERT (1,Alert$,Nochmal%): MOUSEOFF
PRINT @(1,0); CHR$(27);"J";
RETURN Nochmal% MOD 2
'
DEF PROC Ordner(R Laufwerk$,R Pfad$)
LOCAL Dummy$="",Ok%
Desktop : Headline ("Ăffnen Sie ein Directory mit SIGNUM-ZeichensĂ€tzen:")
Pfad$=Laufwerk$+"*.*"
REPEAT
REPEAT
MOUSEON : FILESELECT (Pfad$,Dummy$,Ok%): MOUSEOFF
PRINT @(1,0); CHR$(27);"J";
UNTIL LEN(Pfad$)>2 OR Ok%=0
IF Ok%=0 THEN EXIT
UNTIL MID$(Pfad$,2,2)=":\"
IF Ok% THEN
Pfad$= LEFT$(Pfad$, LEN(Pfad$)-INSTR(MIRR0R$(Pfad$),"\"))+"\"
Laufwerk$= LEFT$(Pfad$,3)
ELSE
Pfad$=""
ENDIF
RETURN
'
DEF PROC Sortieren(S$,R N%)
LOCAL Nullbyte%,Z%
N%=0
FOR Z%=1 TO LEN(S$)
IF ASC( MID$(S$,Z%,1))=0 THEN N%=N%+1
NEXT Z%
DIM Chsets$(N%)
Z%=0
REPEAT
Z%=Z%+1
Nullbyte%= INSTR(S$, CHR$(0))
Chsets$(Z%)= LEFT$(S$,Nullbyte%-1)
IF Nullbyte%= LEN(S$) THEN EXIT
S$= MID$(S$,Nullbyte%+1)
UNTIL 0
SORT Chsets$(0)
RETURN
'
DEF PROC Warnix
LOCAL Alert%,Alert$="[1][ Es wurden keine| SIGNUM-ZeichensÀtze |"
Alert$=Alert$+" gefunden.|][ AHA ]"
Desktop
MOUSEON : FORM_ALERT (1,Alert$,Alert%): MOUSEOFF
PRINT @(1,0); CHR$(27);"J";
RETURN
'
DEF PROC Zielfile(Laufwerk$,R Zielfile$)
LOCAL Pfad$=Laufwerk$+"*.*",Ok%
Desktop:Headline("Bestimmen Sie eine Zieldatei fĂŒr die CHSETS-Liste:")
REPEAT
REPEAT
Zielfile$="LISTFONT.DAT"
MOUSEON : FILESELECT(Pfad$,Zielfile$,Ok%) : MOUSEOFF
PRINT @(1,0); CHR$(27);"J";
UNTIL LEN(Pfad$)>2 AND LEN(Zielfile$) OR Ok%=0
IF Ok%=0 THEN EXIT
UNTIL MID$(Pfad$,2,2)=":\"
IF Ok% THEN
Pfad$= LEFT$(Pfad$, LEN(Pfad$)-INSTR(MIRROR$(Pfad$),"\"))+"\"
Zielfile$=Pfad$+Zielfile$
ELSE
Zielfile$=""
ENDIF
RETURN
Listfont-Programm
Ingo H. Dietrich