160 Spalten mit dem 1526 oder MPS 802
Dieses Unterprogramm läßt den Commodore 1526-Drucker 128 oder sogar 160 Zeichen pro Zeile drucken. Der Druck von breiten Tabellen wird zum Vergnügen!
Der 1526 kommt durch dieses Programm an die Leistungen von teuren Druckern mit Kleinschriftmodus nahe heran. Mit 160 Zeichen pro Zeile übertrifft er diese Drucker sogar.
Wie Sie wissen ist der 1526 (MPS 802) nur bedingt grafikfähig. Es lassen sich selbstdefinierte Zeichen ausdrucken. Das macht auch dieses Programm. Es setzt zwei zu druckende Buchstaben in ein selbstdefiniertes Zeichen um, das der Drucker zu Papier bringt. Der 1526 druckt also immer zwei Buchstaben gleichzeitig (160 Zeichen pro Zeile). Im 128-Zeichenmodus ist es etwas komplizierter. Hier werden aus acht Buchstaben fünf Druckerzeichen zusammengesetzt (Bild 1). Das Aussehen der Zeichen wird über die DATA-Werte im Programm bestimmt. Acht DATAs für ein Zeichen. Ein DATA-Wert bestimmt, welche Nadeln einer vertikalen Punktreihe angeschlagen werden.

Die einzelnen Nadeln haben die folgenden Wertigkeiten:
oben | . | 128 |
. | 64 | |
. | 32 | |
. | 16 | |
. | 8 | |
. | 4 | |
. | 2 | |
unten | . | 1 |
Ein Zeichen ist aus acht solchen Punktreihen zusammengesetzt. Die binären Wertigkeiten der einzelnen Punktspalten werden über die CHR$()-Funktion in einem String addiert und an den 1526 gesandt, der das selbstdefinierte Zeichen druckt.
Das folgende kleine Programm druckt einen senkrechten Strich:
10 open5,4,5
20 a$=chr$(255): rem eine Punktreihe
30 for i=1 to 7 : rem Rest des Zeichens
40 a$=a$+chr$(0): rem mit Leerraum
50 next i :rem auffüllen
60 print#5,a$
70 close5
Tips zur Benutzung
Das eigentliche Programm beginnt ab Zeile 60000. Der Teil vorher dient nur zur Demonstration der 128- und der 160-Zeichendarstellung. Ab Zeile 60000 zerlegt das Programm den zu druckenden String (XX$) in seine Einzelteile, baut daraus die selbstdefinierten Zeichen zusammen und schickt diese an den Drucker.
Wenn Sie das Unterprogramm in einem Basic-Programm verwenden, übergeben Sie einfach die zu druckenden Zeichen in der Variablen XX$ an das Unterprogramm. Das Unterprogramm wird, wie üblich, mit einem GOSUB gestartet. GOSUB 60000 bewirkt eine 160-Zeichendarstellung, GOSUB 60810 eine »Druckbreite« von 128 Zeichen.
Beachten Sie bitte, daß vor dem Aufruf des 128-Zeichenmodus erst einmal der 160-Zeichenmodus aktiviert werden muß. Warum? Nun, beim ersten Durchlauf des Programmes werden alle DATAs in Variablenfelder (V1$() und V2$()) eingelesen. Da der READ-Befehl grundsätzlich mit dem ersten Datum im ganzen Programm beginnt, müssen zur 128-Zeichendarstellung die 160-Zeichen-DATAs überlesen werden. Das geschieht mit einem GOSUB 60000. Danach sind beide Variablenfelder definiert. Sie können dann beliebig den 128- oder 160-Zeichenmodus aufrufen. Würde zuerst der 128-Zeichenmodus aufgerufen, würden die falschen DATAs gelesen und den Variablen zugeordnet. Ein reichlich seltsames Aussehen der Zeichen wäre die Folge.
Eine detaillierte Programmbeschreibung finden Sie in Tabelle 1.
(Martin Riethmüller/hm)Zeile | Inhalt |
0-8 | Programmkopf |
18-120 | Demo |
59000- | Unterprogrammkopf 160-Zeichen-Karte |
60000 | Eröffnen eines Kanals zum Drucker |
60005 | Damit die DATA-Zeilen beim zweiten Aufruf nicht noch einmal aufgerufen werden. |
60010- | DATA-Zeilen für den neuen Zeichensatz |
60080 | Dimensionierung der Zeichensatzvariablen und der Druckvariablen, falls nicht schon ab 61000 gemacht |
60085 | <SPACE> wird definiert |
60090- | Einlesen der restlichen Buchstaben aus den DATA- |
60115 | Zeilen und Zuordnung in V1$(ll) |
60130- | In 60140 String in einzelne Buchstaben zerlegen. |
60160 | Dann in 60145 ermitteln der Nummer des Buchstabens, abfangen von nicht vorhandenen Zeichen. In 60155 auszudruckendes neues Zeichen = die letzten zwei Zeichen, gelesen aus dem neudefinierten Zeichensatz in V1$(ll). |
60165 | Zeilenvorschub des Druckers auf Null |
60170- | Ausdruckschleife mit allmählicher Verschiebung des |
60185 | Druckkopfes durch LE$ |
60190 | Zeilenvorschub |
60200 | Rückkehr zum Hauptprogramm |
60800- | Unterprogrammkopf 128-Zeichen-Karte |
61000 | Eröffnen eines Kanals zum Drucker |
61005 | Damit die DATA-Zeilen beim zweiten Aufruf nicht noch einmal aufgerufen werden |
61010- | Dimensionierung der Zeichensatzvariablen und der |
61015 | Druckvariablen, falls nicht schon ab 61000 gemacht |
61020- | <SPACE> wird definiert |
61035- | DATA-Zeilen, in denen der neue Zeichensatz steckt |
61115- | Einlesen der restlichen Buchstaben aus den DATA- |
61130 | Zeilen und Zuordnung in V1$(II,JJ) |
61140 | Zeilenvorschub des Druckers auf Null |
61145- | In 61155 Zerlegung des eingegebenen Strings in ein- |
61220 | zelne Buchstaben. Dann in 61160 ermitteln der Nummer des Buchstabens, abfangen von nicht vorhandenen Zeichen. Ab 61170 Zusammenbau von 5 neudefinierten Zeichen aus 8 Zeichen von XX$. (Immer 5 »Streifen« zu einem neuen Zeichen.) |
61225- | Ausdruckschleife mit allmählicher Verschiebung des |
61235 | Druckkopfes durch LE$. |
61245 | Zeilenvorschub |
61250 | Rückkehr zum Hauptprogramm |
0 rem " {CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S} 1 rem " {SHIFT--} 160/128-zeichen-karte {SHIFT--} 2 rem " {SHIFT--} fuer commodore 1526 {SHIFT--} 3 rem " {SHIFT--} von martin riethmueller {SHIFT--} 4 rem " {SHIFT--} bei fragen zum programm {SHIFT--} 5 rem " {SHIFT--} oder zum 1526-drucker {SHIFT--} 6 rem " {SHIFT--}gebe ich gerne rat+auskunft{SHIFT--} 7 rem " {SHIFT--} tel. 07152/47418 {SHIFT--} 8 rem " {CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X} 18 clr:open1,4 19 print"{clr}" 20 rem ***** demo ***** 30 xx$="":forx=32to94:xx$=xx$+" "+chr$(x):next 40 xx$=xx$+"das ist der zeichensatz des prgms." 60 gosub60000 70 xx$="":forx=32to94:xx$=xx$+" "+chr$(x):next 90 gosub61000 100 print#1,"und das ist zum vergleich die normale groesse.da sieht man den "; 110 print#1,"unterschied!":goto20 120 rem ********** demo-ende *********** 59000 rem "{CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S} 59010 rem "{SHIFT--} unterprogramm 160-zeichen-karte fuer drucker 1526 {SHIFT--} 59020 rem "{CBM-Q}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-W} 59030 rem "{SHIFT--} aufruf: gosub 60000.der inhalt der variablen xx$ wird ausgedruckt{SHIFT--} 59040 rem "{CBM-Q}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-W} 59050 rem "{SHIFT--} verwendete variablen {SHIFT--} 59060 rem "{SHIFT--} {SHIFT--} 59070 rem "{SHIFT--} statusvariable [ ts ] (zur vermeidung der mehrfachen einlesung {SHIFT--} 59080 rem "{SHIFT--} der datazeilen in [ v1$(94) ] {SHIFT--} 59090 rem "{SHIFT--} laufvariablen [ ii ] und [ jj ] {SHIFT--} 59100 rem "{SHIFT--} datalese-variable [ aa ] {SHIFT--} 59110 rem "{SHIFT--} arbeitsvariable [ v1$ ] {SHIFT--} 59115 rem "{SHIFT--} arbeitsfeld [ w1(2) ] {SHIFT--} 59120 rem "{SHIFT--} [ le$ ] zur positionierung des druckkopfes {SHIFT--} 59130 rem "{SHIFT--} das feld [ v1$(94) ],das den neuen zeichensatz beinhaltet. {SHIFT--} 59140 rem "{SHIFT--} das feld [ dr$(160) ],das ausgedruckt wird. {SHIFT--} 59150 rem "{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X} 60000 open4,4 60005 ts=ts+1:ifts>1then60130 60010 data0,232,0,0,192,0,192,0,112,160,112,160,72,248,176,0,152,32,200,0,80 60015 data168,80,8,0,64,128,0,112,136,0,0,0,136,112,0,80,32,80,0,32,112,32,0,0,4 60020 data24,0,32,32,32,0,0,0,8,0,24,32,192,0 60025 data248,136,248,0,64,192,248,0,184,168,232,0,168,168,248,0,96,184,32 60030 data0,232,168,184,0,248,168,184,0,128,160,248,0,248,168,248,0,232,168,248 60035 data0,0,40,0,0,0,4,40,0,32,80,80,136,80,80,80,0,136,80,80,32,128,168,224 60040 data0,112,168,200,080 60045 data120,160,120,0,248,168,112,0,112,136,136,0,248,136,112,0,248,168,168,0 60050 data248,160,128,0,248,136,152,0,248,32,248,0,0,248,0,0,136,136,240,0 60055 data248,112,136,0,248,8,8,0 60060 data248,64,192,248,248,64,56,0,112,136,112,0,248,160,224,0,112,152,120,0 60065 data248,176,232,0,104,168,176,0,128,248,128,0,248,8,248,0,240,8,240,0,248 60070 data8,56,248,216,32,216,0,224,40,248,0,152,168,200,0 60077 data0,248,136,0,208,168,72,0,0,136,248,0,64,248,64,0 60080 dimv1$(94):iftz<1thendimdr$(160) 60085 v1$(32)=chr$(0)+chr$(0)+chr$(0)+chr$(0) 60090 forii=33to94 60095 forjj=1to4 60100 readaa 60105 v1$(ii)=v1$(ii)+chr$(aa):aa=0 60110 nextjj 60115 nextii 60130 forii=1to80 60135 forjj=1to2 60140 v1$=mid$(xx$,ii*2-(2-jj),1):ifv1$=""thenv1$=" " 60145 w1(jj)=asc(v1$):ifasc(v1$)>94orasc(v1$)<32thenw1(jj)=32 60150 nextjj 60155 dr$(80+ii)=v1$(w1(1))+v1$(w1(2)) 60160 nextii 60165 open6,4,6:print#6,chr$(0):close6 60170 open5,4,5 60175 forii=1to80 60180 print#5,dr$(80+ii):print#4,le$+chr$(254) 60185 le$=le$+" ":nextii 60190 close5:le$="":open6,4,6:print#6,chr$(23):print#4,:print#6,chr$(32):close6 60200 xx$="":close4:return 60800 rem "{CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S} 60810 rem "{SHIFT--} unterprogramm 128-zeichen-karte fuer drucker 1526 {SHIFT--} 60820 rem "{CBM-Q}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-W} 60830 rem "{SHIFT--} aufruf mit sys61000.der inhalt der variablen xx$ wird ausgedruckt{SHIFT--} 60840 rem "{CBM-Q}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-W} 60850 rem "{SHIFT--} verwendete variablen {SHIFT--} 60860 rem "{SHIFT--} {SHIFT--} 60870 rem "{SHIFT--} statusvariable [ tz ] (zur vermeidung der mehrfachen einlesung {SHIFT--} 60880 rem "{SHIFT--} der datazeilen in [ v2$(94,5) ] {SHIFT--} 60890 rem "{SHIFT--} laufvariablen [ ii ] und [ jj ] {SHIFT--} 60900 rem "{SHIFT--} datalese-variable [ aa ] {SHIFT--} 60910 rem "{SHIFT--} arbeitsvariable [ v2$ ] {SHIFT--} 60915 rem "{SHIFT--} arbeitsfeld [ f(8) ] {SHIFT--} 60920 rem "{SHIFT--} [ le$ ] zur positionierung des druckkopfes {SHIFT--} 60930 rem "{SHIFT--} das feld [ v2$(94,5) ],das den neuen zeichensatz beinhaltet. {SHIFT--} 60940 rem "{SHIFT--} das feld [ dr$(160) ],das ausgedruckt wird. {SHIFT--} 60950 rem "{CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X} 61000 open4,4:open5,4,5 61005 tz=tz+1:iftz>1then61140 61010 dimv2$(94,5) 61015 ifts<1thendimdr$(180) 61020 forii=1to5 61025 v2$(32,ii)=chr$(0) 61030 nextii 61035 data0,0,250,0,0,0,224,0,224,0,20,62,20,62,20,98,159,242,140,0 61040 data198,200,16,38,198,108,154,150,110,9,0,0,96,128,0,124,130,130,0,0 61045 data130,130,124,0,0,40,16,124,16,40,16,16,124,16,16,0,0,1,6,0 61050 data16,16,16,16,0,0,0,6,6,0,6,8,16,32,192,124,138,146,124,0 61055 data32,64,254,0,0,70,138,146,98,0,146,146,146,108,0,24,40,94,8,0 61060 data242,146,146,140,0,60,82,146,140,0,144,158,176,208,0,108,146,146,108,0 61065 data100,146,146,124,0,0,0,18,0,0,0,1,12,0,0,16,40,68,68,0 61070 data40,40,40,40,0,68,68,40,16,0,64,128,154,96,0,124,130,178,116,0 61075 data254,144,144,254,0,254,146,146,108,0,124,130,130,130,0,254,130,130,124 61080 data0,254,146,146,146,0,254,144,144,128,0,124,130,146,92,0,254,16,16,254,0 61085 data0,0,190,0,0,132,130,130,252,0,254,16,40,198,0,254,2,2,2,0 61090 data254,64,32,64,254,254,64,32,254,0,124,130,130,124,0,254,144,144,96,0 61095 data124,130,142,126,1,254,152,148,98,0,98,146,146,140,0,128,254,128,128,0 61100 data252,2,2,252,0,248,6,6,248,0,254,2,4,2,254,198,56,56,198,0 61105 data224,18,18,252,0,134,154,178,210,0,254,130,130,0,0,76,178,146,82,0 61110 data0,130,130,254,0,32,64,254,64,32 61115 forii=33to94 61120 forjj=1to5 61125 readaa:v2$(ii,jj)=chr$(aa) 61130 nextjj:nextii 61140 open6,4,6:print#6,chr$(0):close6 61145 forii=1to16 61150 forjj=1to8 61155 v2$=mid$(xx$,ii*8-(8-jj),1):ifv2$=""thenv2$=" " 61160 f(jj)=asc(v2$):ifasc(v2$)<32orasc(v2$)>94thenf(jj)=32 61165 nextjj 61170 dr$(ii*5-4)=v2$(f(1),1)+v2$(f(1),2)+v2$(f(1),3)+v2$(f(1),4)+v2$(f(1),5) 61175 dr$(ii*5-4)=dr$(ii*5-4)+v2$(f(2),1)+v2$(f(2),2)+v2$(f(2),3) 61180 dr$(ii*5-3)=v2$(f(2),4)+v2$(f(2),5)+v2$(f(3),1)+v2$(f(3),2)+v2$(f(3),3) 61185 dr$(ii*5-3)=dr$(ii*5-3)+v2$(f(3),4)+v2$(f(3),5)+v2$(f(4),1) 61190 dr$(ii*5-2)=v2$(f(4),2)+v2$(f(4),3)+v2$(f(4),4)+v2$(f(4),5)+v2$(f(5),1) 61195 dr$(ii*5-2)=dr$(ii*5-2)+v2$(f(5),2)+v2$(f(5),3)+v2$(f(5),4) 61200 dr$(ii*5-1)=v2$(f(5),5)+v2$(f(6),1)+v2$(f(6),2)+v2$(f(6),3)+v2$(f(6),4) 61205 dr$(ii*5-1)=dr$(ii*5-1)+v2$(f(6),5)+v2$(f(7),1)+v2$(f(7),2) 61210 dr$(ii*5-0)=v2$(f(7),3)+v2$(f(7),4)+v2$(f(7),5)+v2$(f(8),1)+v2$(f(8),2) 61215 dr$(ii*5-0)=dr$(ii*5-0)+v2$(f(8),3)+v2$(f(8),4)+v2$(f(8),5) 61220 nextii 61225 forii=1to80 61230 print#5,dr$(ii):print#4,le$+chr$(254):le$=le$+" " 61235 nextii 61240 le$="" 61245 open6,4,6:print#6,chr$(26):print#4,:print#6,chr$(32):close6:close4:close5 61250 xx$="":return