Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
lc80:41_programme:synthi [2017/03/14 08:05] – ↷ Links angepasst weil Seiten im Wiki verschoben wurden volkerplc80: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, 02/88. Das originale Listing wurde auf dem Z9001 mit dem ASM erstellt, das zugehörige Programm ist synthi21.asm (vp 1987). 
- 
-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 <RES>, <ADR>, <2>, <0>, <0>, <0>, <EX> gestartet. Die 
-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 <RES>. 
- 
-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  umgewandelt. 
-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, die Tonerzeugung, ist etwas 
-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; sie bestimmt im wesentlichen die Periodendauer 
-und damit die Tonhoehe des Tones. Durch staendiges Veraendern 
-dieser Konstanten koennen nun verschiedene Klaenge erzeugt 
-werden. 
-   
-Wie werden nun die Klaenge programiert? Die Klangdaten sind 
-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: Mit den Befehlen LD 
-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 
-                        | 
-                 INITIALISIERUNG 
-                        | 
-                        | 
-      +------->  TASTATURABFRAGE 
-      |            |        | 
-      +--- keine Taste      | 
-      |    gedrueckt        | 
-      |                     | 
-      |          TASTCODEBERECHNUNG 
-      |                        |  
-      |    schwarze            weisse 
-      |    Taste               Taste 
-      |                        | 
-      |    TABZEIGER-      LD TONKONSTANTE 
-      |    BERECHNUNG            | 
-      |                        | 
-      |                   TONAUSGABE 
-      |                        | 
-      +-------+------------------+ 
- 
- 
-**Bild 2: Aufbau der Tabelle TAB** 
- 
-     Nr.      Anzahl   Bedeutung                           Byte 
-     des Byte der Byte                                     steht in 
-     1+2             Adresse der zugehoerigen Tontab.    (IX+0) 
-                   0 Ton anschwellend                  (IX+2) 
-                       1 Ton abschwellend 
-                   Tondauer (Anzahl der Durchlaeufe)   (IX+3) 
-                   Variationsbreite des. Tons          (IX+4) 
-                   0 reiner Ton                        (IX+5) 
-                       1 Tongemisch 
-                   0 einphasige Veraenderung           (IX+6) 
-                       1 beidphasige Veraenderung 
- 
- 
-**Anlage: Programmlisting** 
- 
-Die Downloads selbst gibt es auf der Seite [[lc80:software]]. 
  
  • lc80/41_programme/synthi.1489478757.txt.gz
  • Zuletzt geändert: 2017/03/14 08:05
  • von volkerp