Newsroom druckt deutsch
Einer der Hauptmängel des Zeitungsprogramms »Newsroom« wird mit zwei Listings behoben: Ab sofort kann man auch mit Umlauten arbeiten.
Da hat man nun ein tolles Druckprogramm, mit dem man selber Zeitungen drucken kann, und dann beherrscht es keine Umlaute. So ist die Situation beim »Newsroom«, den wir in Ausgabe 3/86 ausführlich vorstellten. Doch mit etwas Geduld und den zwei hier abgedruckten Listings kann man dem Newsroom zu den Umlauten, aber auch zu völlig neuen Zeichensätzen verhelfen.
Für die zwei Größen von Zeichensätzen sind zwei verschiedene Listings notwendig. Mit »Small Change« (Listing 1) können Sie die kleinen, mit »Big Change« (Listing 2) die großen Zeichensätze editieren.
Die Diskette mit den Zeichensätzen muß sich in Laufwerk 8 befinden. Dazu sollte man die Zeichensatzfiles »SFNTS«, »LFNT0«, »LFNT1« und »LFNT2« mit einem File-Kopierprogramm von der Original-Diskette auf eine andere, leere Diskette überspielen. Die beiden kleinen Zeichensätze sind im File »SFNTS« enthalten. Das Programm »Big Change« fragt nach der Zeichensatznummer zwischen 0 und 2, um dann das entsprechende Zeichensatzfile zu laden.
Das Lesen der Zeichen von Diskette dauert ein Weilchen, bedingt durch das langsame Basic-Programm. Danach erscheint das erste Zeichen (»!«) auf dem Bildschirm. Ab jetzt kann man das Programm wie folgt über die Tastatur steuern:
<Space> läßt das nächste Zeichen auf dem Bildschirm erscheinen.
<*> dient zum direkten Anspringen eines Zeichens. Dazu muß die Zeichennummer angegeben werden (entspricht nicht den ASCII-Codes!). Die kleinen Zeichensätze haben 200 Zeichen, die großen 100. Größere Zahlen können zum Programmabsturz führen.
Die Cursortasten dienen zur Steuerung des Cursors im umrahmten Feld.
<=> setzt oder löscht den Punkt an der Cursorposition.
<Return> übernimmt das editierte Zeichen wieder in den Speicher.
Soll das editierte Zeichen unter einer anderen Zeichennummer gespeichert werden, betätigen Sie den Klammeraffen und geben die Nummer ein. Diese Funktion ist besonders nützlich, um die Umlaute zu erstellen.
<↑> speichert den editierten Zeichensatz unter dem Namen »NEWFONT« (und einem Anhängsel) auf Diskette. Danach müssen Sie ihm mit dem Rename-Befehl der Floppy den Namen des editierten Zeichensatzes geben.
Leider hat der Newsroom eine eigenwillige Tastaturabfrage, so daß sich die Umlaute nur schwer auf der Tastatur unterbringen lassen. Deswegen hier ein Vorschlag für Zeichen, die Sie für die Umlaute opfern sollten:
| Taste | Zeichen | Nummern |
|---|---|---|
| Klammeraffe | ß | 35,131 |
| Pfeil n. oben | ä | 65,161 |
| SHFT Pfeil n.o. | Ä | 97,193 |
| Pfund | ü | 63,159 |
| SHFT Pfund | Ü | 95,191 |
| eck. Klammer l. | ö | 62,158 |
| eck. Klammer r. | Ö | 64,160 |
Als Vorlagen für die Umlaute kann man die normalen Vokale verwenden. Sie haben die folgenden Nummern:
a = 68, A = 36, o = 82, 0 = 50, u = 88, U = 56
Um also ein »ä« zu erstellen, gehen Sie wie folgt vor: Wählen Sie Zeichen 68 (»a«) an, setzen Sie Punkte darauf und speichern es unter der Nummer 65.
Sollte Ihnen das alles viel zu viel Arbeit sein: Auf der Leserservice-Diskette befinden sich die fertigen deutschen Zeichensätze, die nach oben genannter Tabelle erstellt wurden.
Das letzte Problem, das sich Ihnen noch stellt: Wie manipulieren Sie Ihre Newsroom-Diskette, daß die deutschen Zeichensätze auch wirklich benutzt werden? Sie sollten auf gar keinen Fall Ihre Original-Diskette verwenden, da Sie diese sonst zerstören könnten. Machen Sie also mit einem Kopierprogramm eine Kopie der Diskette. Stören Sie sich nicht an Fehlermeldungen auf Spur 35, die gehören nämlich zum Kopierschutz. Die Kopie ist zwar nicht alleine lauffähig, aber Sie können die Zeichensatzdaten dort ändern. Löschen Sie also die alten Zeichensätze und speichern Sie die neuen mit einem File-Kopierprogramm.
Wenn Sie mit deutschen Zeichensätzen arbeiten wollen, gehen Sie wie folgt vor: Laden Sie den Newsroom normal ein; sobald das Titelbild mit der Menüauswahl erscheint, tauschen Sie die Original-Diskette gegen Ihre Kopie mit den neuen Zeichensätzen aus. Nun sollten Sie problemlos arbeiten können.
Da es beim Original-Newsroom inzwischen verschiedene Versionen gibt, können wir nicht garantieren, daß dieses Verfahren immer zum Erfolg führt. Sollten uns Unverträglichkeiten bekannt werden, werden wir versuchen, diese in einem Folge-Artikel zu beseitigen. Eines ist auf jeden Fall sicherzustellen: Manipulieren Sie nur an einer Kopie, niemals an der Original-Diskette! Sollten Sie diese zerstören, kann es einige Zeit dauern und auch ein paar Mark kosten, bis Sie vom Händler eine Ersatz-Diskette erhalten.
(bs)10 rem *** zeichensatzaenderung ***
20 rem *** fuer "the newsroom" ***
30 rem *** kleine schrift ***
50 poke53280,3:poke53281,3:print"{clr}{blu}"
100 dimb(2000)
110 open 3,8,3,"sfnts,p,r"
115 print"{down}{down}{down}bitte geduld - pures basic"
120 an=an+1:gosub 1000:b(an)=a
130 if st=0 then120
140 close 3
200 for l=4to199
210 ifb(l)=0then 310
220 gosub2000:print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}"
230 fork=0to7
240 form=0to7
250 if(b(l*8+171+k)and2^m)=0then270
260 poke1080+k*40+(7-m),81
270 poke55352+k*40+(7-m),6
300 nextm,k
305 print"zeichen #:"l
310 print"{down}breite :"b(l)
315 x=0:y=0:poke1080,peek(1080)or128
320 geta$:ifa$=""then320
325 ifa$="*"theninput"{down}{down}zeichen #:";l:goto210
326 ifa$="@"theninput"{down}{down}neue zeichen #:";l:gosub1700:goto410
330 if a$="^"thenl=199:goto410
340 if a$="{rght}"thengosub1100
350 if a$="{left}"thengosub1200
360 if a$="{down}"thengosub1300
370 if a$="{up}"thengosub1400
380 ifa$="="thengosub1600
390 ifa$=chr$(13)thengosub1700:goto410
395 ifa$=" "then 410
400 goto 320
410 nextl
420 open3,8,3,"@:newfonts,p,w"
430 forl=1toan
440 print#3,chr$(b(l));
450 next
460 close3
470 end
880 nextl:end
1000 get#3,a$
1010 ifa$=""thena=0:return
1020 a=asc(a$):return
1100 rem *** cursor rechts ***
1110 gosub 1500
1120 if x<6then x=x+1
1130 gosub 1500
1140 return
1200 rem *** cursor links ***
1210 gosub 1500
1220 if x>0then x=x-1
1230 gosub 1500
1240 return
1300 rem *** cursor runter ***
1310 gosub 1500
1320 if y<7then y=y+1
1330 gosub 1500
1340 return
1400 rem *** cursor rauf ***
1410 gosub 1500
1420 if y>0then y=y-1
1430 gosub 1500
1440 return
1500 rem *** cursor setzen/loeschen ***
1510 ifpeek(1080+x+y*40)>128thenpoke1080+x+y*40,peek(1080+x+y*40)and127:return
1520 poke1080+x+y*40,peek(1080+x+y*40)or128:return
1600 rem *** punkt setzen/loeschen ***
1610 if peek(1080+x+y*40)=160thenpoke1080+x+y*40,209:return
1620 if peek(1080+x+y*40)=209thenpoke1080+x+y*40,160:return
1700 rem *** neues zeichen ***
1710 gosub1500:input"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}breite ";b(l)
1720 fork=0to7:b(l*8+171+k)=0
1730 form=0to7
1740 ifpeek(1080+k*40+(7-m))=81thenb(l*8+171+k)=b(l*8+171+k)or2^m
1750 nextm,k
1760 return
2000 rem *** bildschirmaufbau ***
2010 print"{clr} {rvon} "
2020 fork=1to8
2030 print" {rvon} {rght}{rght}{rght}{rght}{rght}{rght}{rght} "
2040 next
2050 print" {rvon} "
2060 return
10 rem *** zeichensatzaenderung ***
20 rem *** fuer "the newsroom" ***
30 rem *** grosse schrift ***
50 dimb(3500)
60 poke53280,3:poke53281,3
70 print"{clr}{blu}"
90 input"{clr}{down}{down}zeichensatz (0-2):";s$
100 f$="lfnt"+s$+",p,r"
110 open 3,8,3,f$
115 print"{down}{down}bitte geduld - ist halt nur basic"
120 an=an+1:gosub 1000:b(an)=a
130 if st=0 then120
140 close 3
200 for l=4to132
210 ifb(l)=0then 310
220 gosub5000:print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}"
230 v=0:w=0:gosub2000
240 v=8:w=1:gosub2000
250 v=320:w=16:gosub2000
260 v=328:w=17:gosub2000
305 print"zeichen #:"l
310 print"{down}breite :"b(l)
315 x=0:y=0:poke1076,peek(1076)or128
320 geta$:ifa$=""then320
325 ifa$="*"theninput"{down}zeichen #:";l:goto210
326 ifa$="@"theninput"{down}neue zeichen #:";l:gosub1700:goto410
330 if a$="^"thenl=132:goto410
340 if a$="{rght}"thengosub1100
350 if a$="{left}"thengosub1200
360 if a$="{down}"thengosub1300
370 if a$="{up}"thengosub1400
380 ifa$="="thengosub1600
390 ifa$=chr$(13)thengosub1700:goto410
395 ifa$=" "then 410
400 goto 320
410 nextl
415 f$="@:newfont"+s$+",p,w"
420 open3,8,3,f$
430 forl=1toan
440 print#3,chr$(b(l));
450 next
460 close3
470 end
1000 get#3,a$
1010 ifa$=""thena=0:return
1020 a=asc(a$):return
1100 rem *** cursor rechts ***
1110 gosub 1500
1120 if x<15then x=x+1
1130 gosub 1500
1140 return
1200 rem *** cursor links ***
1210 gosub 1500
1220 if x>0then x=x-1
1230 gosub 1500
1240 return
1300 rem *** cursor runter ***
1310 gosub 1500
1320 if y<15then y=y+1
1330 gosub 1500
1340 return
1400 rem *** cursor rauf ***
1410 gosub 1500
1420 if y>0then y=y-1
1430 gosub 1500
1440 return
1500 rem *** cursor setzen/loeschen ***
1510 ifpeek(1076+x+y*40)>128thenpoke1076+x+y*40,peek(1076+x+y*40)and127:return
1520 poke1076+x+y*40,peek(1076+x+y*40)or128:return
1600 rem *** punkt setzen/loeschen ***
1610 if peek(1076+x+y*40)=160thenpoke1076+x+y*40,209:return
1620 if peek(1076+x+y*40)=209thenpoke1076+x+y*40,160:return
1700 rem *** neues zeichen ***
1710 gosub1500:input"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}breite ";b(l)
1720 v=0:w=0:gosub3000
1730 v=8:w=1:gosub3000
1740 v=320:w=16:gosub3000
1750 v=328:w=17:gosub3000
1760 return
2000 rem *** teilzeichen setzen ***
2010 fork=0to7
2020 form=0to7
2030 if(b(l*32+3+k*2+w)and2^m)=0then2050
2040 poke1076+k*40+(7-m)+v,81
2050 poke55348+k*40+(7-m)+v,6
2060 nextm,k
2070 return
3000 rem *** teilzeichen holen ***
3010 fork=0to7:b(l*32+3+k*2+w)=0
3020 form=0to7
3030 ifpeek(1076+k*40+(7-m)+v)=81thenb(l*32+3+k*2+w)=b(l*32+3+k*2+w)or2^m
3040 nextm,k
3050 return
5000 rem *** bildschirmaufbau ***
5010 print"{clr} {rvon} "
5020 fork=1to16
5030 print" {rvon} {rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght} "
5040 next
5050 print" {rvon} "
5060 return