Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
| lc80:41_programme:synthi [2017/03/14 08:05] – ↷ Links angepasst weil Seiten im Wiki verschoben wurden volkerp | lc80:41_programme:synthi [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Synthesizer ====== | ||
| - | |||
| - | geplant als Artikel für Jugend-Technik, | ||
| - | |||
| - | Originaltext (Schreibmaschine): | ||
| - | |||
| - | **Ein Synthesizer auf dem LC80** | ||
| - | |||
| - | Der LC80, ein Lernkomputer aus Erfurt, ist mit geringstem Hardwareaufwand gebaut. So besitzt er in der Grundausbaustufe nur | ||
| - | 1 kByte RAM, der aber auf 4kByte aufgestockt werden kann. Dieser | ||
| - | geringe Speicher reicht jedoch fuer viele Anwendungs- und Lernfaelle aus, da der LC80 nur in Maschinencode programmierbar ist. | ||
| - | Die Tonausgabe und die sechsstellige Siebensegmentanzeige lassen | ||
| - | wirkungsvolle Spiele und ernsthaftere Anwendungen zu, so z.B. ein | ||
| - | Taschenrechner oder ein Schaltkreispruefgeraet. Heute moechte | ||
| - | ich einen kleinen Synthesizer fuer den LC80 vorstellen. | ||
| - | |||
| - | Dieser Synthesizer laeuft ueber die Hoerkapsel und die Tastatur des Computers. Es ist keine Erweiterung der Hardware notwendig. Vom Programmlisting ist die zweite Spalte CODE ab der | ||
| - | Adresse 2000H einzugeben - und schon kann es losgehen. Vorher | ||
| - | empfiehlt es sich aber, eine Kopie des soeben muehsam eingetippten Programms auf eine Kassette auszulagern. Der Synthesizer wird mit < | ||
| - | weissen Tasten stellen die eigentliche Klaviatur -oder zuenftiger Keyboard- dar, waehrend die schwarzen Tasten fuer den | ||
| - | Klang verantwortlich sind. Die Taste <0> entspricht dem Ton gis, | ||
| - | <1> dem a usw. bis zur Taste <F> Ton h1 . Wird auf eine dieser | ||
| - | Tasten gedrueckt, so erklingt der entsprechende Ton, Beim | ||
| - | Druecken auf eine schwarze Taste werden intern einige Speicherzellen veraendert, die auf den Klang Einfluss haben. (Bei den | ||
| - | Tasten <LD>, <ST>, <ADR> kommen vorerst nur dieselben Toene, | ||
| - | s.u.). Verlassen werden kann das Programm durch < | ||
| - | |||
| - | Wie funktioniert das nun? Das Programm untergliedert sich | ||
| - | grob in die zwei Bereiche Tastaturabfrage und Tonausgabe. Die | ||
| - | Tastaturabfrage ist analog dem Betriebssystem-Unterprogramm DAK2 | ||
| - | aufgebaut, d. h. die Laufzeit fuer diesen Programmteil ist bei | ||
| - | jeder gedrueckten Taste gleich! Das ist fuer die hier gewaehlte | ||
| - | Art der Tonausgabe wichtig. Am Ende des Programmteils TASTATUR- | ||
| - | ABFRAGE (LINE 21-39) steht im A-teg1ster ein interner, DAK2 entsprechender Tastencode. Dieser wird in den Zeilen LINE 44-47 in | ||
| - | einen weiteren, besser nutzbaren Tastaturcode | ||
| - | Dieser Code steht in der Tabelle TACOD (LINE 106-129). Der | ||
| - | gesamte Programmteil Tastaturabfrage kann auch dort in anderen | ||
| - | Programmen genutzt werden, wo es auf eine schnelle Tastenerkennung ankommt. | ||
| - | |||
| - | Der zweite Teil des Synthesizers, | ||
| - | komplizierter aufgebaut. Es muessen zuerst die Daten aus dem | ||
| - | Programmteil TAB (LINE 134-199) entsprechend des gewaehlten | ||
| - | Klangs bereitgestellt werderi. Dazu wird das Register IX genutzt | ||
| - | und in der Routine TABZEIGERBERECHNUNG geladen; dann wird | ||
| - | zurueck zur Tastaturabfrage gesprungen. Wurde eine weisse Taste | ||
| - | gedrueckt, erfolgt ein Sprung zum Programmteil LD TONKONSTANTE. | ||
| - | Hier wird das Register C mit einer Tonkonstanten entsprechend | ||
| - | dem aktuellen Klang und Ton geladen. Der Ton wird letztendlich | ||
| - | im Programmteil TONAUSGABE in LINE 82-84 erzeugt und als Rechteckschwingung ausgegeben: Es wird das PIO-Bit der Hoerkapsel | ||
| - | abgefragt. Ist es 0, wird eine 1 ausgegeben und umgekehrt. | ||
| - | Danach wird eine Zeitschleife mit der Tonkonstanten (in Register | ||
| - | C) durchlaufen; | ||
| - | und damit die Tonhoehe des Tones. Durch staendiges Veraendern | ||
| - | dieser Konstanten koennen nun verschiedene Klaenge erzeugt | ||
| - | werden. | ||
| - | | ||
| - | Wie werden nun die Klaenge programiert? | ||
| - | in der Tabelle TAB untergebracht. Fuer jede schwarze Taste | ||
| - | stehen 7 Byte zur Klangdefinition bereit, deren Bedeutung Bild 2 | ||
| - | zu entnehmen ist. Hier kann sich jeder selbst an verschiedenen | ||
| - | Klaengen probieren. Die dazugehoerigen Tonkonstanten sind im | ||
| - | Programmteil TONTABELLEN analog LINE 207-222 unterzubringen. So | ||
| - | muss man z.B. selbst noch die Tonkonstanten fuer die Tasten | ||
| - | <LD>, <ST>, <ADR> schreiben. (Das ist der Grund dafuer, dass bei | ||
| - | diesen Klaengen alle Toene (noch) gleich sind). | ||
| - | |||
| - | Zum Schluss noch zwei Kleinigkeiten: | ||
| - | A,0FFH und OUT 0F4H wird eine unerwuenschte Ausgabe auf der Anzeige unterdrueckt. In LINE 14 wird der EX-Klang als erster, | ||
| - | d.h. nach dem Programmstart gueltiger, Klang definiert. | ||
| - | |||
| - | Ich wuensche Euch viel Spass mit diesem Synthesizer. Und | ||
| - | vielleicht erweitert Ihr ihn noch um einige Effekte wie Vibrato, | ||
| - | Lautstaerkeaenderungen, | ||
| - | |||
| - | |||
| - | **Bild 1: Programmaufbau** | ||
| - | |||
| - | START | ||
| - | | | ||
| - | | ||
| - | | | ||
| - | | | ||
| - | +-------> | ||
| - | | | | | ||
| - | +--- keine Taste | | ||
| - | | gedrueckt | ||
| - | | | | ||
| - | | TASTCODEBERECHNUNG | ||
| - | | | ||
| - | | schwarze | ||
| - | | Taste Taste | ||
| - | | | ||
| - | | TABZEIGER- | ||
| - | | BERECHNUNG | ||
| - | | | ||
| - | | | ||
| - | | | ||
| - | +-------+------------------+ | ||
| - | |||
| - | |||
| - | **Bild 2: Aufbau der Tabelle TAB** | ||
| - | |||
| - | | ||
| - | des Byte der Byte steht in | ||
| - | | ||
| - | | ||
| - | 1 Ton abschwellend | ||
| - | | ||
| - | | ||
| - | | ||
| - | 1 Tongemisch | ||
| - | | ||
| - | 1 beidphasige Veraenderung | ||
| - | |||
| - | |||
| - | **Anlage: Programmlisting** | ||
| - | |||
| - | Die Downloads selbst gibt es auf der Seite [[lc80: | ||