Willkommen bei
 Kult-Magazine
 Kultboy.com-Inhalte
 Interaktiv
Neues Mitglied: Doc Mnemonic
 Sonstiges




Kult-Zeitschriften
zurück zur ÜbersichtGehe zu:


Schneider Magazin 9/88


Berichte: (0)
Keine Berichte vorhanden.

Testberichte/Vorschauen: (0)
Keine Testberichte/Vorschauen vorhanden.

Redakteure: (0)
Keine Redakteure vorhanden.


Meine Sammlung: (noch nicht hinzugefügt)

Sammlung:Besitzt Du dieses Heft?
Suche:Suchst Du dieses Heft?
Verkaufen:Willst Du dieses Heft verkaufen?
Zustand:Zustand des Heftes
Anmerkung:Persönliche Anmerkung zum Heft

(Du musst angemeldet sein)


Sammlung der Mitglieder: (5) Sammlungsübersicht
Mitglied Sammlung Suche Verkauf Zustand Anmerkung
asc Gut
Konsolensammler66 Befriedigend
kultmags -
micrin Wie neu Seiten an den Rändern altersbedingt leicht angegilbt
vault -
vorige AusgabeAusgabe Bewerten nächste Ausgabe

Inhalt: Bewertungen: 0 Gesamtwertung: 0.00
Cover: Bewertungen: 0 Gesamtwertung: 0.00

Bild: JPG | Abmessung: 397x570 | Grösse: 88 Kbyte | Hits: 1831
Scan von Sauerkrautpoet

User-Kommentare: (10)Seiten: [1] 
27.12.2021, 14:09 Edgar Allens Po (2852 
"Gewinnen Sie ein Spiel von Diabolo."


Haha, der Diabolo-Versand mit den teuflischen Preisen. War der auch außerhalb der CPC-Ecke bekannt? Der war immer in den CPC-Heften präsent.
31.07.2020, 21:30 Grumbler (1446 
bittschön.

wenn du noch fragen hast gerne.
31.07.2020, 17:12 Edgar Allens Po (2852 
Krass, was du da alles mal eben getippt hast!
Jetzt bin ich erst einmal informiert...

Thanx, dear Grumbler.

Und natürlich sind alle Klarheiten beseitigt.
30.07.2020, 22:40 Grumbler (1446 
Mit Assembler bezeichnet man normalerweise eine Darstellung der Maschinensprache, die einigermaßen standardisiert (d.h. ähnlich auch bei unterschiedlichen Prozessoren) und noch menschlich lesbar ist, und daher eigentlich sehr lehrreich gewesen wäre, wenn sowas in Magazinen mit aussagekräftigen Kommentaren öfter abgedruckt gewesen wäre.

sieht z.b. so aus:

//SCR_SET_MODE 0
__asm
ld a, #0
call #0xBC0E
__endasm;

//PALETE
__asm
ld a, #0
ld b, #0 ;black
ld c, b
call #0xBC32 ;SCR SET INK

ld a, #1
ld b, #12 ;Yellow
ld c, b
call #0xBC32 ;SCR SET INK

ld a, #2
ld b, #25 ;Pastel Yellow
ld c, b
call #0xBC32 ;SCR SET INK

ld a, #3
ld b, #24 ;Bright Yellow
ld c, b
call #0xBC32 ;SCR SET INK
__endasm;

//SCR SET BORDER 0
__asm
ld b, #0 ;black
ld c, b
call #0xBC38
__endasm;

(von http://www.cpcmania.com/Docs/Programming/2D_Starfield.htm) (ist eigentlich C-Code, aber C kann Inline-Assembler, daher dieses "__asm". C ist übrigens auch nur ein etwas besserer Assembler.)

Wie man sieht, viel Zeremonie, nur um MODE, BORDER und ein paar Farben zu setzen, würd jeglichen Platz sprengen, wie gesagt.

Anderes Beispiel: http://cpctech.cpc-live.com/source/memcheck.html

Nun kann man beim CPC das eh nativ nicht so eingeben wie gesagt, da wurd kein Interpreter/Compiler mitgeliefert (obwohl es viel einfacher zu interpretieren wäre als BASIC), man bräucht ein eigenes Tool dafür.

All das kann man aber mit den POKE-Befehlen des CPC-Basic abbilden, jedes Fizzel von dem Assembler-Code, den du siehst, würd man im CPC-Basic mit POKE [Adresse],[byte] in den Speicher reinhämmern. [Adresse] startet irgendwo, wo der für sowas vorgesehene Speicherbereich losgeht (steht irgendwo in der Doku), und dann nimmt dann bei jedem nächsten POKE einfach die nächste Speicherzelle, weil Quellcode ist ja in der Regel linear, ne, und [byte] entspricht praktisch 1:1 einem dieser Opcodes (Befehle) bzw Wert, den du da siehst. Ein "ld a" (das ist nur *ein* Befehl, "lade bzw. lese einen Wert in Register A ein") entspräche z.B. dem [byte] 0A oder 1A oder paar andere, je nach Situation. Siehe Z80-Doku/Übersicht: http://clrhome.org/table/

Das wären aber viele POKE-Befehle, darum nimmt man den DATA-Befehl im CPC-BASIC, wo man die [byte]s aneinanderreiht, und dazu gibt's dann eine BASIC-Routine, die diese DATA-Befehle in POKE-Anweisungen umwandelt, findet man auch immer in diesen Listings dazu.

Jegliches Maschinensprachenprogramm besteht also aus sogenannten Opcodes (Befehle, die der Prozessor und andere Chips wie die für Grafik und Sound direkt verstehen, indem es eine Schaltung dafür gibt) und Zahlenwerten.

Die Opcodes bzw. Befehle in Maschinensprache sind sehr primitiv, müssen ja in Hardware als Schaltung implementiert sein, da kann man keine Wunder vollbringen. Daher gibt's nur sowas wie "Leg einen Wert in einen bestimmten Ort im Speicher", "Leg einen Wert in einen Register (ist auch so eine art Speicher, aber nicht das RAM, sondern direkt im Prozessor, sehr schnell, aber gibt es gibt nur sehr wenige solcher Register, d.h. nur eine Hand voll)", "Mach eine arithmetische Operation mit der Zahl in diesem Register sowie der Zahl in jenem Register und schreib dann das Ergebnis da und dortin."

Ein einfaches PRINT $xyz in Maschinensprache ist bereits megakackenaufwändig, eine Zeichenkette ist ja bereits eine dynamisch große liste von Bytes, wieviel Speicher soll man dafür reservieren, das ist schon ziemlich tricky, und wie sieht's mit Zeilenumbruch aus, etc etc.

Das meiste bei typischen Maschinensprache-Programmen ist also wirklich nur Werte und Daten in der Gegend rumschaufeln, und man muss in der Dokumentation eines Geräts nachschaun, an welchen Addressen besondere Funktionen sitzen, die was auslösen, so dass irgendwas passiert, wie das ändern der Rahmenfarbe im Beispiel oben. Neben den unterschiedlichen Befehlssätzen bei unterschiedlichen Prozessoren/Chips ist es vor allem das, was bei jedem Heimcomputer anders ist.

Daher gibt's sowas wie aufwändige Operationen zum "rumzeichnen" gar nicht, das gibt's nur im BASIC (Amstrad hat halt netterweise quasi ein fast ein Malprogramm mitgeliefert mit den Befehlen wie DRAW, FILL etc, aber die waren natürlich kaggnlangsam und für schnelle Games unbrauchbar), Spiele kamen in der Regel einfach mit den Bitmaps für die Sprites und Hintergründe bereits fertig daher. Ausnahmen bestätigen die Regel, und besonders bei 3D-Spielen wurden dann natürlich eigene Routinen implementiert, aber so einfach benutzbar wie im BASIC waren die dann meist auch nicht.

Bei kommerziellen Programmen und Spielen sind die Maschinensprachenprogramme natürlich direkt als .BIN o.ä. bzw. die Bitmap-Grafikdaten als solche straightforward abgelegt (ohne den Umweg über POKEs und DATA-Zeilen im BASIC). (Den reinen Binärcode wiederum kann man aber in Magazinen schlecht abdrucken.)

Hoffe alle Klarheiten sind beseitigt.
Kommentar wurde am 31.07.2020, 00:35 von Grumbler editiert.
30.07.2020, 21:15 Edgar Allens Po (2852 
Ach, ich dachte immer, diese Data-Zeilen würde man Assembler nennen. Doch wieso ineffizient? Und wie konnte man Grafikdaten speichern? Konnte man im Malprogramm oder Spriteditor erstellte Grafiken in Data-Zeilen umwandeln? Oder wurden die mit Befehlen gezeichnet? So wie man es vom Basic her kennt?
29.07.2020, 22:43 Grumbler (1446 
nee, das waren doch endlose kolonnen an DATA-Zeilen dann (auch sehr ineffizient really; zumindest hätte man ein base32-encoding oder so hernehmen können).

und natürlich enthielten die dann auch grafikdaten.

solche games waren dann natürlich schneller, aber nicht sehr gehaltvoll (sonst würd das ja jeglichen platz in so heften sprengen).

assembler wär lehrreicher gewesen, gab es aber fast nie, erstens hatt otto-normal-user gar kein tool/editor dafür in der regel, und zweitens nimmt das ja noch viel mehr platz im heft weg.
29.07.2020, 21:23 Retro-Nerd (13468 
Das stelle ich mir ab beim abtippen als kompliziert vor. Wirklich in nativen Assembler? Die C64 Listings waren immer hexadezimal konvertierte Assembler Programme, die man per Zahlenkolonnen (und a-f Buchstaben) in ein spezielles Programm (MSE) eingeben könnte.
Kommentar wurde am 29.07.2020, 21:24 von Retro-Nerd editiert.
29.07.2020, 19:44 Edgar Allens Po (2852 
Die guten Listings waren stets in Assembler abgedruckt.
Zwar gab es nie ein "Trantor" zum Abtippen, aber durchaus war mal was Lustiges dabei.

Schwierig war ja bei Listings, dass keine vorgemalten Sprites oder andere Sachen enthalten sein konnten. Dies musste irgendwie anders gemacht werden, manchmal wurden gar die Symbole genutzt, die es beim CPC ab Werk gab.
Kommentar wurde am 29.07.2020, 19:45 von Edgar Allens Po editiert.
28.07.2020, 11:40 Grumbler (1446 
mit basic war's halt noch 10x kaggnlangsamer als der cpc eh schon war.
26.07.2020, 20:16 Edgar Allens Po (2852 
Ich tippte echt noch gerne ab, obwohl es eine Schweinearbeit war.
Manchmal war ein cooles Spiel dabei.
Seiten: [1] 


Du willst einen Kommentar schreiben?

Dann musst du dich nur kostenlos und unverbindlich registrieren und schon kann es losgehen!