SimulationsRaum Rotating Header Image

BASIC

GAME CIRCUITS #8: BASIC Oneliner Games

Nächste Woche Samstag im Signallabor findet die 8. Runde der GAME CIRCUITS statt. Zudem ist das Signallabor (und natürlich die Veranstaltung) für die “Lange Nacht der Wissenschaft” geöffnet. Wir freuen uns auf viele Besucher! Infos gibt es auf u.g. Plakat oder bei Facebook.

gamecircuits8

»I program my home computer … Beam myself into the past«

Heute habe ich Earl C. Careys Buch “RETRO Game Programming unleashed for the Masses” bekommen:

Das Buch unternimmt nicht weniger, als die hardwarenahe Programmierung von Spielen auf vier verschiedenen Plattformen für Programmieranfänger(!) vorzustellen: Programmiert werden der Atari 800, Commodore 64, Apple II und TRS-80 CoCo. Vom Aufbau und Anschluss der Rechner über deren Hardware-Ausstattung, die unterschiedlichen Assembler-Dialekte und BASIC-Versionen, Grundlagen der Computergrafik aber auch die Geschichte der Firmen und Computerspiele bis hin zu dezidierten Programmiertechniken führen die Kapitel den Leser ins Thema ein. Höhepunkte bilden die Kapitel über den praktischen Umgang mit den Grafikmodi, Sprites, Soundeffekten und das Zusammenfügen aller Elemente zu einem Spiel.

Interessant scheint mir das Buch nicht nur für Leute, die wirklich Spiele auf diesen Plattformen programmieren wollen, sondern auch für diejenigen, die einen operativen Zugang zur Homecomputergeschichte suchen. Ich bin sehr gespannt und werde von meiner Lektüreerfahrung hier berichten …

Mein heutiger Ausflug zum Schockwellenreiter hat sich in mehrfacher Hinsicht gelohnt. Nicht nur habe ich einen netten Blogger kennengelernt, sondern auch eine stolze Menge alter Programmier-Bücher von ihm übernehmen können. Mein Dank noch einmal in diese Richtung – und vielleicht sehen wir uns ja bald mal wieder!

IF

Basics about BASIC

Die Programmiersprache BASIC bildet den Kern meines computerarchäologischen Forschungsprojektes. Demzufolge wächst meine Bibliothek in diese Richtung derzeit auch am schnellsten. Vier “Neu”zugänge habe ich im Laufe der vergangenen Woche verzeichnet:

Donald Alcock: Illustrating BASIC (A Simple Programming Language). Cambridge: Cambridge Univ. Press 1977.

Alcocks Buch ist vollständig handgeschrieben und geht die Didaktik problemorientiert an. Die Illiustrationen und Programmbeispiele scheinen sich an Kinder zu richten; umso erstaunlicher, dass das Buch in einem Universitätsverlag erschienen ist.

John G. Kemeny: Man and the Computer. New York: Charles Scribner’s sons 1972.

Kemeny, der zu den Miterfindern von BASIC gehört, erzählt hier die Geschichte der Programmiersprachenlehre am Dartmouth-College, wo BASIC 1964 erstmals implementiert wurde. Noch bevor David Ahl mit seinem Buch über “BASIC Computer Spiele” berühmt wird, wirft sich Kemeny hier schon für eine Nutzung des Computers als Spielmaschine in die Bresche.

Henry Mullish: A Basic Approach to BASIC. New York: John Wiley & Sons 1976.

Eine Empfehlung aus “10 PRINT”: Mullishs didaktisches Konzept versucht das Lernen einer Programmiersprache mit einer Fremdsprache zu vergleichen. Er stellt dabei sukzessive Vokabeln (Befehle), Phrasen (komplexere Funktionen) und Texte (Programme) vor.

John M. Nevison: The Little Book oaf BASIC Style. How to write a program you can read. Reading u.a.: Addison-Wesley 1982.

Der Untertitel verrät es bereits: Das Buch versucht sich dem Spaghetti-Code-Angriffen entgegen zu stellen und Programmierempfehlungen zu geben, bei denen der Programmierer nicht zuerst an die Maschine, sondern an einen potenziellen menschlichen Leser des Codes denken soll.

Game Circuit #7 & Game Circuit #8

Aufgrund der Semester- und Veranstaltungsplanung habe ich die Termine und Themen für die nächsten beiden Game-Circuit-Treffen bereits jetzt festgelegt:
Game Circuits #7 gamecircuits8

Retrocomputing im Direktkontakt

Wie bereits geschrieben, bin ich in diesem Jahr als Gastredner auf das 14. Vintage Computing Festival Europe nach München eingeladen. Die Webseite mit Informationen – unter anderem über meinen Vortrag – wird gerade aufgebaut. Zusätzlich bekomme ich einen Ausstellertisch, auf dem ich zwei meiner exotischeren Heimcomputer und die darauf am kommenden Freitag eingetippten BASIC-Spiele präsentieren werde.

Colon-Einführung

15 Jahre, nachdem Thomas E. Kurtz und John Kemeny 1964 am Dortmouth-College die Programmiersprache BASIC veröffentlicht hatten, gab es derartig viele Dialekte, die sich nicht nur im Befehlswortschatz, sondern oft auch in der Syntax unterschieden, dass man es teilweise mit ganz anderen Programmiersprachen zu tun hatte. Ein zentrales Anliegen der BASIC-Erfinder war der klare Programmaufbau, der u.a. dadurch unterstützt werden sollte, dass – wie beim Assembler – pro Zeile nur eine Programmanweisung zugelassen war.

Viele, die BASIC in den 1980er-Jahren kennengelernt haben, wurden indes mit Möglichkeiten konfrontiert, mehrere Anweisungen in einer Zeile unterzubringen. Zu deren Trennung wurde vor allem der Doppelpunkt benutzt. Gerüchten zufolge hat Microsoft diese – wie etliche andere – Neuerung in BASIC eingeführt, als sie 1975 ihr ALTAIR-BASIC veröffentlichten. Tatsächlich findet sich darin bereits der Doppelpunkt zur Trennung.

Auf der Suche nach einem Beleg dafür, dass das hier erstmals auftaucht, bin ich allerdings auf wesentlich frühere Dialekte gestoßen, die es ebenfalls zulassen, dass mehrere Befehle pro Zeile eingegeben werden können. Der Verdacht, dass es sich dabei um eine Veränderung für Minicomputer-BASIC-Dialekte handelt, hat sich letztlich bestätigt, wie ich aus einem Programmierhandbuch für das PDP-11-BASIC aus dem Jahre 1970 entnehmen konnte:

All BASIC statements and computations must be written on a single line; they cannot be continued onto a following line. However, more than one statement may be written on a single line when each statement after the first is preceded by a colon.

(Multiple statement lines are a special feature of PDP-11 BASIC.) For example:

10 INPUT A^B> C
is a single statement line, whereas

2 LET X=ll: PRINT X^Y-.Z: IF X=A THEM 10

is a multiple statement line containing three statements: LET, PRINT, and IF. Most statements may be used anywhere in a multiple state- ment line; exceptions are noted in the discussion of each statement.

Quelle: PDP-11-BASIC Programming Manual – Single User, Paper Tape Software, S. 2-1 (Hervorh. durch mich)

Spätere BASIC-Dialekte für die PDP-11 nutzten nicht nur Doppelpunkte, sondern Slashes und/oder Backslashes zur Befehlstrennung – etwa das RT-11-BASIC.

Was nun noch etwas mysteriös ist, ist die Frage, woher Gates und Allen auf die Idee gekommen sind, den Doppelpunkt zu übernehmen. Entstanden ist das ALTAIR-BASIC auf einer 8080-Emulation auf einer PDP-10. Für die PDP-10 scheint aber 1975 nach meiner ersten Suche kein BASIC-Dialekt mit Doppelpunkt-Befehlstrennung existiert zu haben. Hat sich 1975 in Harvard, wo die beiden BASIC entwickelt haben, ebenfalls eine PDP-11 befunden? Und warum haben die beiden diesen wesentlich schnelleren Rechner nicht für ihre Emulation benutzt?

7. Lange Nacht der Computerspiele

Am Samstag, den 4.5. findet an der HTWK Leipzig wieder eine lange Nacht der Computerspiele statt. Im vergangenen Jahr war ich dort und hielt einen Vortrag über Spieleingabegeräte. Auch dieses Jahr bin ich wieder mit einem Beitrag vertreten. Ich stelle einige Ergebnisse der letzten “Game Circuit”-Sitzung vor: Ich erzähle etwas über die Besonderheiten des BASIC-Abtipp-Spiels, bekomme eine Vitrine, in der typische Computerzeitschriften der 1970er- und 1980er-Jahre ausgestellt sind, und einen Tisch für drei Computer, auf denen abgetippte Spiele vorgeführt werden.

Weitere Infos: http://www.schreibfabrik.de/spielenacht.phpUnd: https://www.facebook.com/events/239947402806664/

LOAD “10 PRINT”

Gestern ist endlich mein gedrucktes Exemplar von Ian Bogosts und Nick Montforts Buch “10 PRINT CHR$(205.5+RND(1)); : GOTO 10” aus der Reihe “Software Studies” per Post gekommen … da entdecke ich, dass es das Buch auch als Download-PDF gibt. Nichtsdestotrotz ist natürlich die Verhandlung Themas auf und seine Rezeption von Papier etwas ganz anderes als vermittels eines PDFs. Darüber, in welches Beziehungsgeflecht Computer, Leser und Tipper angesichts eines ausgedruckten BASIC-Programms geraten, werde ich in Kürze beim Game Circuit #6 zu sprechen kommen.

Sit down & type in

Die 6. Runde der Game Circuits steht an! Am 8. Februar lade ich ab 17 Uhr ins Signallabor ein, um auf historischer 8-Bit-Hardware Computerspiele zu spielen und zu diskutieren.

Auf dem Programm stehen dieses mal von Amateuren in BASIC programmierte und in Computerzeitschriften veröffentlichte Spiele für verschiedene Homecomputer-Systeme. Nach einem Vortrag über die medienarchäologischen und -epistemologischen Perspektiven auf die Textsorte “Programmlisting” sind die Teilnehmer angehalten, in eines der zur Verfügung gestellten Systeme Listings mit einer maximalen Länge von 100 Zeilen einzutippen. Verschiedene Vorlagen aus zeitgenössischen Computerzeitschriften und -büchern werden dazu zur Auswahl gestellt. Der Nachvollzug dieser archaischen Eingabetätigkeit, bei der der Mensch zu einem Medium zwischen Papier und Maschine wird, soll einerseits die pragmatischen Aspekte der Textsorte “Programmlisting” veranschaulichen und andererseits die Funktionsweise von Spielesoftware als Code in Ansätzen erfahrbar machen. Mitzubringen sind eine leere Audiokassette und/oder eine 5,25- bzw. 3-Zoll-Diskette (letztere für diejenigen, die sich vorab schon für den Amstrad CPC 6128 als Plattform entscheiden möchte).

Weitere Infos zu Zeit und Ort finden sich auf dem Plakat:

gamecircuits6.

Meine Lehrveranstaltungen im Sommersemester 2013

Im Sommersemester werde ich drei reguläre Lehrveranstaltungen anbieten:

  1. Seminar (für BA MeWi, Modul III und MuMe, Modul X): Strings – Symbolmanipulation mit dem Computer
  2. Seminar (für MA MeWi Modul I): Die Verkabelung der Sprache. Geschichte und Theorie der medialen Sprach- und Textverarbeitung
  3. Ringvorlesung (für MA Mewi Modul I): SHIFT – RESTORE – ESC. Die Aufhebung des Retro-Computings in der Medienarchäologie

Interessierte Studenten anderer Studiengänge sind zur Teilnahme herzlich eingeladen. Das Master-Seminar ist wieder für den Scheinerwerb für Kulturwissenschaft-Master-Studenten geöffnet.

Details zu den Veranstaltungen:

(weiterlesen …)

RETURN again to BASIC

In Kürze erscheint die 12. Ausgabe des Magazins RETURN, zu dem ich die Fortsetzung meines Beitrags zur Geschichte der Programmiersprache BASIC beigesteuert habe. Dieses mal schreibe ich über die Zeit, nachdem “Micro Soft” das ALTAIR-BASIC publiziert hab bis in die Gegenwart der immer noch sehr lebendigen Programmiersprache. Bestellt werden kann das Heft über die Homepage (aufs Cover klicken).

RETURN

Heute hatte ich die Ausgabe 11 des RETURN-Magazins im Briefkasten, für das ich ab diesem Heft als Autor tätig bin. Das Hauptthema des Heftes widmet sich dem 40. Geburtstag der Firma Atari mit – das ist typisch für die RETURN – einem großen Teil zur Hardware dieser Computerspiele und Heimcomputer. Meine beiden Beiträge haben nichts mit dem Heftthema zu tun: Zum Einen habe ich einen Bericht über den Analogcomputer-Workshop beigesteuert, zum anderen den ersten Teil eines zweiteiligen historischen Artikels über die Geschichte der Programmiersprache BASIC (im ersten Teil von Darthmouth bis zum ALTAIR 8800). Das Heft kann direkt auf der Webseite bestellt oder im gut sortieren Zeitschriftenhandel bezogen werden.

µP – An Eye to the Future

Noch rechtzeitig vor meinem Vortrag übernächste Woche im Kolloquium, wo es um den Z80-Assembler-Kurs und die Anschlussfähigkeit der Platform Studies an die Medienarchäologie gehen wird, ist heute der kürzlich bei ebay ersteigerte “Microprofessor MPF-1b” gekommen. Ein Einplatinenrechner auf Z80-Basis, der zu den am längsten und häufigsten verkauften Lehrsystemen gehört. In der Ausführung MPF-1b verfügt der Microprofessor über ein zusätzliches BASIC-ROM und etwas mehr RAM, so dass sich damit ganz rudimentäre Programme in dieser Hochsprache entwickeln lassen. Dazu gibt es eine Tastaturschablone, auf der die Befehls-Shortcuts abgedruckt sind sowie ein englischsprachiges Handbuch.

/\///\\/\\\///\/\/\\\/\

Ian Bogost und Nick Montfort, die 2009 mit einem Buch über die Atari-VCS-Konsole die “Platform Studies” als neue (Inter)Disziplin zwischen Technikgeschichte, Informatik, Kunst und Game Studies eröffnet haben, kündigen für November ein neues Buch an: Der Titel “10 PRINT CHR$(205.5+RND(1)); : GOTO 10” sagt im Prinzip schon, worum es gehen soll: Eine Zeile C64-BASIC, die zufallsbasierte Blockgrafik auf den Bildschirm bringt, bietet den Anlass zu wissenschaftlichen Reflexionen der Herausgeber und ihrer Autoren über computererzeugte Zufallszahlen, die Geschichte von Labyrinthen, BASIC als Programmiersprache, den Commdore C64 usw. Das Buch kann bereits jetzt bei Amazon vorbestellt werden.

Neun Zeilen Code

BasicProgrammingBox

Als Homecomputer Ende der 1970er-Jahre anfingen, den Spielkonsolen langsam den Rang abzulaufen, verfuhr der bis dahin unangefochtene Marktführer Atari zweigleisig: Zum Einen entwickelte man eine eigene Homecomputer-Serie, die ihre Wurzeln allerdings in der Spielkonsolen-Technologie behalten sollte (alle 8-Bit-Atari-Computer behielten ihren Modul-Slot an der Oberseite, für den es etliche Spielmodule gab). Zum Anderen erstellte Warren Robinett 1978 für die massenhaft verkaufte “Atari 2600″-Spielkonsole ein “BASIC Programming”-Modul*:

Aufgrund des extrem kleinen Konsolen-RAM-Speichers von nur 256 Byte und der fehlenden Tastatur waren die Möglichkeiten dieses Programmiersystems natürlich beschränkt. Die Eingabe der Befehle erfolgte über zwei aneinander steckbare “Keyboard Controller” (Atari CX-50). Zusammen mit dem BASIC-Modul wurden dazu Overlay-Folien angeboten, die die Tasten des rechten Controllers mit alphanummerischen Zeichen beschrifteten und die des linken Controllers mit Befehls-Shortcuts und einer Programm-Ablaufsteuerung:

Der minimale Speicher machte es nötig, (im Vergleich zu zeitgenössischen anderen Dialekten} mächtige BASIC-Befehle auf dem Spielmodul-ROM anzubieten, damit die VCS-Konsole mit einer möglichst turingvollständigen Programmiersprache aufwarten konnte. Jedes Programm durfte nämlich nur maximal neun Zeilen lang sein. Deshalb gab es Befehle, die – ähnlich bei verschiedenen Assemblern – mehrere Funktionen gleichzeitig innehatten. Beeindruckend lässt sich dies an einer sechszeiligen(!) Version des Pong-Spiels mit Grafik- und Sound-Ausgabe verdeutlichen, dessen Listing im Handbuch des Moduls zu finden ist:

1 Hor 2!Hor 2+Key
2 If Ver 1>90 Then Ver 1!88
3 If Hit Then Ver 1!9
4 Ver 1!Ver 1+If Ver 1 Mod 2 Then 8 Else 92
5 Hor 1!Hor 1+7
6 Goto 1

Atari selbst plante bezüglich des Eingabemediums offenbar mehrfach, eine eigene, separate Tastatur für die “VCS 2600″-Konsole herauszubringen; es blieb jedoch bei Prototypen. Anstelle dessen wurden Zweitanbieter aktiv: Von SpectraVideo (Universum) gab es eine Tastatur namens “Compumate SV-010“, die jedoch – anders als die CX-50-Controller – nicht an den Joystickports der Konsole angeschlossen wurde, sondern am Modul-Schacht. Der Grund dafür war, dass dieses Gerät nicht als Ergänzung zum BASIC-Modul gedacht war, sondern ein eigenes Programmiersystem darstellte: Es beinhaltete ein 16 KB BASIC-ROM, zusätzliche 1,75 KB RAM sowie eine Schnittstelle für einen Datenrekorder zum laden und speichern der Programme. Letzteres fehlte dem BASIC-Modul, womit es – wie schon die “Odyssey II” (bzw. “Philips G-7000“) nur sehr bedingt zum Progammieren geeignet war. Na gut: Neun Zeilen Code sind schnell wieder eingetippt.

Ich habe mir das Modul, die Beschreibung und die Keyboard-Controller gekauft. Was mir noch “fehlt”, sind die Tastaturfolien, die ich in Kürze nachbasteln werde. Dann stelle ich hier ein paar Screenshots mit Programmbeispielen ein und drehe vielleicht auch mal ein kleines Video, das die Funktionalität des o.g. Pong-Programms vorführt.

*Nicht zu verwechseln mit dem jüngeren Entwicklungssystem BATARI BASIC!

Insider-Informationen

 

Errors: OUT OF DATA / Out of date

img024

Kürzlich habe ich bei ebay “gefühlte 100.000 Programme” auf Kassette für den Sinclair ZX Spectrum erstanden. Erfreulich war nicht nur der sehr gute Zustand der Bänder, sondern auch, dass deren Inhalt vollständig dokumentiert war. Mit im Paket lag dazu ein kleines, rotes Ringbuch, das den Katalog der Software enthielt … aber noch mehr! Auf einigen Seiten fanden sich mit Bleistift geschriebene Programmlistings und Hardware-Schemata. Der Schrift nach zu urteilen und der Tatsache, dass der “U880″ mehrfach Erwähnung findet, dürfte es sich beim Vorbesitzer wohl um ein Kind oder einen Jugendlichen der späten DDR gehandelt haben.

Der Grund, warum ich das erwähne, ist aber, dass die meisten dieser Blätter handgeschriebene BASIC-Programme enthalten. (Das erinnert mich an meine eigenen Anfänge 1982/3, in denen ich nur alle 2-3 Wochen einmal am Wochenende Zugriff auf einen TRS-80-Clone hatte und in der Zwischenzeit meine Programme dafür auf Papier entworfen habe.) Unter den Listings findet sich auch das Folgende:

Ein Programm, das auf keinem BASIC-Interpreter so funktionieren dürfte, wie der junge Autor es sich gedacht hat. Der Hintergrund dieses Programmierfehlers ist allerdings historisch interessant. Das 1962 am Dartmouth-College ursprünglich veröffentlichte BASIC war nicht interaktiv konzipiert. Das heißt: Man konnte keine Programme schreiben, die einem später beim Ablauf nach Eingaben fragten, welche dann durch das Programm verarbeitet wurden. Den Ausweg dafür boten die Befehle DATA und READ. Mit DATA ließen sich innerhalb des Programmcodes Daten in serieller Reihenfolge ablegen, die dann beim Ablauf des Programm mit READ wie von einem Stapel abgerufen und verarbeitet werden konnten.

Der Befehl INPUT kam erst in späteren Revisionen von BASIC hinzu und “interaktivierte” die Programmiersprache durch eine Eingabeschnittstelle (Vgl. BASIC-Kapitel in Wexelblatt). Das obige Programm versucht nun quasi in den Zeilen 10 bis 40 den DATA-”Stack” interaktiv mit INPUT-Eingaben von Zahlen zu füllen. In der Zeile “30 DATA Z” glaubt der Autor, mit der Variable Z Daten in den “Daten-Speicher” zu schreiben, obwohl DATA ja eben Daten im “Programm-Speicher” ablegt. Es wird also nicht ein Wert durch die Variable Z in den Programmcode hinein geschrieben, sondern eben nur ein “Z”.

Das dürfte der Autor im zweiten Teil des Programms, indem er die zuvor eingegebenen Daten wieder auslesen und darstellen lassen wollte, schnell festgestellt haben. Es dürfte sich ein “OUT OF DATA”-Error ereignet haben, weil einfach keine 6 DATA-Werte vorhanden sind, sondern nur einer (“DATA Z”). Die FOR-NEXT-Schleife bricht also nach dem ersten Durchlauf mit einem Fehler ab.

Erstaunlich finde ich, dass der Autor ohne Kenntnis der Entwicklungsgeschichte der Sprache hier intuitiv auf den Widerspruch gestoßen ist, dass es zwei ganz unterschiedliche Daten-Eingabe-Konzepte in BASIC gibt (ein passives und ein interaktives), die beide zugleich gar nicht nötig wären, wenn man das (modernere) interaktive Konzept zusammen mit der (von Beginn an vorhandenen) Möglichkeit, Variablen zu indizieren/dimensionieren nutzt (also im ersten Programmteil einfach Z(1) bis Z(6) mit Daten füllt. Aufgrund dieser Möglichkeit ist das DATA-READ-Konzept in moderneren BASIC-Varianten dann oft zu einer bloßen Möglichkeit “verkommen”, Maschinensprache(unter)programme innerhalb des BASIC-Programms abzulegen.

Übrigens: Schon seine Programme auf Papier zu entwerfen, um sie erst später in den Computer einzugeben, widerspricht der Philosophie von BASIC, das ja eben angetreten war, um den Programmierer aus der Lochkarten-Operator-Tyrannei zu befreien. Dennoch äußert sich BASIC-Mitentwickler Kurtz heute wohlwollend über solche Programmierer, die ihren Code nicht dauernd testen, sondern erst einmal fehlerfrei entwerfen – denn auch dabei sollte BASIC helfen. (Vgl. BASIC-Kapitel in Warden/Biancuzzi).

  • Richard L. Wexelblatt (ed.) History of Programming Languages. New York: Academic Press, 1981.
  • Federico Biancuzzi, Shane Warden: Visionäre der Programmierung: Die Sprachen und ihre Schöpfer. Köln u.a.: O’Reilly 2009.

»There is nothing to fear!«

Kürzlich habe ich eine Originalausgabe vom Handbuch des TRS-80 (Level 1) erstanden. Wie nah 1977 die Sphären von “fun” und “programming” schon/noch beieinander lagen, lässt sich sehr schön aus dem Vorwort des Autors ablesen:

A Personal Note from the Author

This is not a conventional book. There are plenty of good conventional books, and plenty that are not so good.

This book is written specifically for people who don’t know anything about computers, and who don’t want to be dazzled by fancy footwork from someone who does. It is written to teach you how to use your Radio Shack TRS-80 computer and start you on a fast track to becoming a competet programmer. To that end, every fair and unfair, conventional and unconventional, flamboyant and ridiculous technique I could think of was used. I want you to have fun with your computer! I don’t want you to be afraid of it, because there is nothing to fear!

The only restraints put on this book were good taste an a genuine attempt not to insult your intelligence. Beyond that, it contains no “snow jobs”, no efforts to impress or intimidate you, and no attempt to sell you anything except the idea that comptuers are just not all that hard to learn to use.

Sit back, relax, read slowly as though savoring a good novel, and above all, let your imagination wander. I’ll supply you with all the routine facts and techniques you need. The real enjoyment begins when your imagination starts the creative juices flowing and the computer becomes a tool in your own hands. You become its master – not the other way around. At that point it evolves from just a box of parts into an extension of your personality.

Enjoy your new computer!

Dr. David A. Lien
San Diego – 1977