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