LocoBasic vs. Basic 3.5/7.0

  • LocoBasic vs. Basic 3.5/7.0

    Ein sinnvoller Vergleich hätte aus meiner Sicht mehrere Bereiche. Einmal den allgemeinen Bereich, der bei beiden Systemen gegeben ist:
    1. Vorhandene Schleifenkonstrukte (for, while, repeat usw.)
    2. Vorhandene Fallunterscheidungen (if, if/else, on x goto/gosub, case ...)
    3. Grafikbefehle (Linien, Kreise/Ellipsen, Teilkurven, Polygone etc.)
    4. Sound (der Bereich, der bei CPC und CBM gleich ist)
    5. Debugging/Entwicklungshilfen (renumber, trace etc)


    Schwierig sind die Systembesonderheiten - in LocoBasic können Zeichendarstellungen neu definiert werden, Basic V7 unterstützt Sprites. Das wären Äpfel mit Birnen verglichen. Die selbstdefinierten Zeichen könnte man in Basic7.0 über den Grafikmodus mit SSHAPE und GSHAPE simulieren - wenn Zeit/Timing keine Rolle spielen.

    Nachtrag: der Thread sollte aufgeteilt werden und alles rund um Basicvergleich in einen neuen Thread ("LocoBasic vs. Basic 3.5/7.0"?) gepackt werden.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Tale-X ()

  • Pattern Maker Basic Applikation

    @Bytebreaker:
    Das Beispiel für den 800 XL habe ich nicht mehr. Das war recht sperrig zu programmieren, den Code hatte ich nicht gespeichert. Atari ST und C64 kann ich gerne Posten. C16 muss ich nachsehen, wo ich das habe.....


    Gesendet von meinem CBM 3032 mit gemischten Gefühlen.
    <--- Das da ist eine Hälfte meines Ichs
  • Bytebreaker schrieb:

    @Eloy_Dorian

    Oh cool zeig doch mal ich besitze alle diese Rechner und hätte gern deine Sourcen gesehen.
    Sorry - bin faul und habe deshalb einen Screenshot für den Atari ST (Gfa-basic) angehängt

    So hier daaaas Original für den C64 direkt aus dem Handbuch:

    Quellcode

    1. 1 rem up, up, and away
    2. 5 print"clr/home"
    3. 10 v=53248:rem basisadresse des vic ii
    4. 11 pokev+21,4:rem sprite 2 aktivieren
    5. 12 poke 2041,13:rem daten für sprite 2 aus block 13
    6. 20 forn=0to62:read q:poke832+n,q:next n:rem holt die date aus den data-zeilen
    7. 30 for x =0to200
    8. 40 pokev+4,x:rem neue x-koordinate
    9. 50 pokev+5,x:rem neue y-koordinate
    10. 60 next x
    11. 70 goto 30
    12. 200 data0,127,0,1,255,192,3,255,224,3,231,223
    13. 210 data7,217,240,7,223,240,7,217,240,3,231,224
    14. 220 data3,255,224,3,255,224,2,255,160,1,127,64
    15. 230 data1,62,64,0,156,128,0,156,128,0,73,0,0,73,0,0
    16. 240 data62,0,0,62,0,0,62,0,0,28,0
    Alles anzeigen
    <--- Das da ist eine Hälfte meines Ichs

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Eloy_Dorian ()

  • Quellcode

    1. 5 graphic0,1
    2. 10 fori=0to62:reada:a$=a$+chr$(a):next
    3. 20 sprsava$,1:movspr1,20,50:sprite1,1,7
    4. 30 movspr1,135#1
    5. 40 getkeya$
    6. 50 sprite1,0
    7. 60 end
    8. 200 data0,127,0,1,255,192,3,255,224,3,231,224
    9. 210 data7,217,240,7,223,240,7,217,240,3,231,224
    10. 220 data3,255,224,3,255,224,2,255,160,1,127,64
    11. 230 data1,62,64,0,156,128,0,156,128,0,73,0,0,73,0,0
    12. 240 data62,0,0,62,0,0,62,0,0,28,0
    Alles anzeigen
    :D Basic7.0 :thumbsup:

    Ich war faul - ich hätte auch die Bits der Spritedaten ausschreiben können, dann in den Grafikbildschirm plotten lassen und anschließend als Sprite übernehmen.
  • Für Sprites am CPC brauche ich ein Tool namens SpritesAlive. Das ist für die Integration in Loco Basic speziell gedacht. h arbeite mich die nächsten Tage da ein und liefere dann ein Listing.

    Es gibt noch Cross Delopment Tools für Windows, das zielt ab auf Assembler, und um das geht es ja hier nicht.

    Anhand der vielen vorhandenen Basic-Befehle wäre es ein ziemlicher Aufwand, kategorisch alle Basic-Befehle plattform-übergreifend nach Themengruppen zu vergleichen. Aus meinem Locomotive Basic Alltag kann ich aber gegenüber CBM V2 Basic folgendes aus dem Gedächtnis sagen (wobei ich längst nicht alle Loco Befehle nutze):

    10 while inkey$<>"P"
    20 gosub 500 : rem Hauptroutine Spiel
    30 wend

    10 if inkey$="" goto 10

    Absolute und relative Koordinatenangabe: move x,y (absolut), mover x,y (relativ), analog draw, drawr
    Ursprung setzen origin 319,199 --> Koordinatensystem mit 4 Quadranten auf einen Schlag

    move x,y:tag::print a$ : auf pixelgenaue Koordinate gehen, Pixelortung aktivieren, String pixelgenau platzieren und ausgeben, Pixelortung aus.
    locate 10,10:print "Hallo"; -> Auf Zeichenkoordinate 10,10 gehen, Hallo sagen. CBM kennt kein locate, auch kein fill für einggrentze Flächen. Keine Linien, das ist mit CBM Behelfsmitteln der reinste Graus.

    Befehle Every, After: Über bis zu 3 Interrupt-Quellen können gleichzeitig aktiviert und zeitlich priorisiert für Sprünge und Unterprogramm-Aufrufe verwendet werden (wie bei meiner CPc Analog Uhr, da brauchte ich nur einen für die Sekunden, der Rest abgeleitet).

    Es gibt sehr differenzierte Sound-Befehle (Sound, Envelope) über die man den CPC nicht nur piepsen lassen kann, sondern schön dreistimmig singen lassen mitten während einem Basic Spiel ohne dass die Leistung abnimmt und man hat keinerlei greulichen Poke-Origien abzuleisten die den Interpreter binden.
    Beispiel:

    cpcwiki.eu/forum/games/coolbox-(new-game-in-basic)/

    Dann unterstützt der Editor 80 Zeichen, Copy/Paste, Auto-Zeilennummerierung, Renumber und Mergen verschiedener Basic Sourcen.

    Bei CBM Basic lernt man schnell, dass man Assembler lernen muss und von dort aus V2 Basic Routinen anspringen kann um nicht selber per Tabelle einen Sinus ausrechnen zu müssen. Bei Loco Basic dauert es länger bis man Assembler aus Not zu akzeptieren bereit ist und selbst dann wird man komfortabel aufgefangen weil der CPC sich sehr angenehm in ASM programmieren lässt. Das hab ich aber nur von Aussagen von Demo Codern, ich weiß das nicht aus erster Hamd, weil C64 Assembler bei mir Prio hat wenn es um Maschinensprache geht und ich nicht zuviel verschiedenes gleichzeitig lernen will.

    Für Demos, einfache Spiele und Anwendungen ist der CPC dem C64 gleichwertig bis überlegen. Bei aufwändigen Spielen ist er dank fehlender Sprites und schlechterem Sound unterlegen.

    Bei den Sprites hat der CPC ein echtes Manko, das er nur mit viel CPU Zeit und Speicherplatz ausgleichen kann und was bei aufwändigen Spielen so stark drückt, dass der ganze Rechner im Vergleich abfällt - wenn die Zielgruppe eben zu 95% aus Kindern und Jugendlichen bestand, die halt zu 80% spielen wollten und das "Programmieren" und "Hausaufgaben" bloss Vorwand für die Eltern genutzt haben damit so ein Ding unter dem Weihnachtsbaum landet.
  • Bytebreaker schrieb:


    CBM kennt kein locate, auch kein fill für einggrentze Flächen. Keine Linien, das ist mit CBM Behelfsmitteln der reinste Graus.
    Fill gibts es aber nicht auf dem CPC 464 mit BASIC 1.0.

    Bytebreaker schrieb:


    Bei CBM Basic lernt man schnell, dass man Assembler lernen muss und von dort aus V2 Basic Routinen anspringen kann um nicht selber per Tabelle einen Sinus ausrechnen zu müssen. Bei Loco Basic dauert es länger bis man Assembler aus Not zu akzeptieren bereit ist und selbst dann wird man komfortabel aufgefangen weil der CPC sich sehr angenehm in ASM programmieren lässt. Das hab ich aber nur von Aussagen von Demo Codern, ich weiß das nicht aus erster Hamd, weil C64 Assembler bei mir Prio hat wenn es um Maschinensprache geht und ich nicht zuviel verschiedenes gleichzeitig lernen will.
    Assembler vom CPC mit C64 vergleichen? Schwierig. Die ganzen Z80 Befehle machen ein Programmieren teilweise einfacher, aber der 6510 zieht seine Stärken aus den Adressierungsmöglichkeiten.
    Dann darf man nicht vergessen, das der CPC nur einen Bildschirmspeicher kennt, welcher für alle Modi gleich ist und sich nur durch die Pixelkodierung unterscheidet. Auch da ist ein direkter Vergleich mit dem C64 schwer, einfach weil der C64 was das Bild angeht, ein anderes Konzept verfolgt.

    Was den Bildschirmspeicher angeht, da kann man den 64er eher mit dem Atari XL vergleichen und (vermutet) den CPC mehr mit dem Spectrum.
    Mitwäre das nicht passiert! :prof:
    :syshack: Meine 3D-Drucker Teile auf thingiverse.com/oobdoo/designs :strom:
    Sammlung | 91 Bücher bzw. 25.261 Buchseiten mit Z80/8080 Power
  • LocoBasic vs. Basic 3.5/7.0

    Kann man mit dem CPC Text pixelgenau positionieren? Dann könnte man ein Pseudosprite aus umdefinierten Zeichen bauen. Beim C16 geht das nur Zeilen und Spaltenweise, was zwar schneller als Shapes wäre, aber dafür sehr mit Hauruck


    Gesendet von meinem CBM 3032 mit gemischten Gefühlen.
    <--- Das da ist eine Hälfte meines Ichs
  • Eloy_Dorian schrieb:

    Kann man mit dem CPC Text pixelgenau positionieren? .
    Jo das geht. cpcwiki.eu/index.php/Locomotive_BASIC#TAG_.5B.23st.5D

    Und wenn man die Vergleiche zwischen den Systemen machen möchte, dann darf man auch nicht die Größe vom BASIC-ROM auslassen.
    LocoBASIC hat 16kb. C64 nur 8kb?
    Mitwäre das nicht passiert! :prof:
    :syshack: Meine 3D-Drucker Teile auf thingiverse.com/oobdoo/designs :strom:
    Sammlung | 91 Bücher bzw. 25.261 Buchseiten mit Z80/8080 Power
  • Poke-Orgien werden beim CBM-Basic 3.5 und 7.0 nicht mehr benötigt. Für Sound und Musik hat Basic 7.0 mehrere Befehle - für Hüllkurven, Soundeinstellungen und Melodiespiel. Der CPC ist dennoch im Vorteil, weil bei Basic 7.0 der Befehl für Melodiespiel (Play) erst nach vollständigem Spiel das Programm weiterlaufen lässt. Hintergrundmusik ist damit nicht realisierbar. Der Soundbefehl dürfte dagegen für Hintergrundgeräusche gehen - der "stößt" den SID nur an, welcher dann selber die Hüllkurve durchläuft.

    Es juckt in den Fingern, ein CPC-Spiel möglichst ohne Pokes in Basic7.0 umzusetzen. Wer gibt seines dafür frei :D


    Nachtrag: pixelgenau geht über Umwege in Basic7.0 - Text mit char in Grafikbereich zeichnen, mit sshape in ein String speichern und dann mit gshape pixelgenau positionieren. Ist zwar leicht umständlic, aber ohne Poke.

    Nachtrag 2: ROM-Größe Basic 7.0 32kb. Ist übrigens auch ein Spriteeditor drin enthalten (sprdef) und in Monitor.
  • Meiner Meinung nach kann man die beiden Systeme überhaupt nicht vergleichen.

    Der CPC 464 kam 2 Jahre nach dem 64'er auf den Markt. Das er daher technisch - abgesehen von Sprites und Sound - auf einem besseren bzw. neuerem Stand ist, ist doch wohl klar.
    Hätten die Entwickler des 64'ers mehr Zeit gehabt, wäre dabei DIE ultimative Maschine rausgekommen, mit noch besseren Sound- und Grafikeigenschaften sowie einem besseren Basic, mehr und größere Sprites usw. Aber hätte, hätte Fahrradkette...

    So haben beide Systeme trotzdem ihre Daseinsberechtigung. Und auch wenn ich auf dem CPC angefangen habe, ist und bleibt der 64'er für mich das interessantere Gerät. Nicht zuletzt, weil damit viele Kindheitserinnerungen verbunden sind.
    ______________________________________________
    Wenn ich posten will, werde ich Briefträger...
  • @Eloy_Dorian

    Ja genau, solche per Zeichen definierten Sprite Ansätze gibt es am CPC tatsächlich. Ich checke mal was Sprites Alive genau macht.

    @oobdoo

    ROM Größen sind für mich kein Vergleichshindernis denn man bezahlt ausgleichsweise an anderer Stelle mit fehlendem Adressbereich.

    Der Adressbereich von 64 k könnte dagegen schon ein Kriterium für "gleiche Liga" sein. Dann bleiben C128 und CPC6128 im Rennen, denn trotz mehr RAM bleibt der Adressbereich bei 64 k.

    Unter diesen Umständen darf es auch CBM Basic 7.0 und Loco Basic 1.1 mit Fill in derselben Vergleichs Gruppe sein.

    Nachtrag zu Schleifen: Loco kennt if then else. CBM nur if then.
  • @ the real wanderer

    Erst der Amiga war der perfekte C64 (bzw. Atari) Nachfolger. Mit plus 4 und c128 hätten sie Gelegenheiten gehabt die verschenkt wurden da alle Stärken von c64, plus 4 und c128 nicht zur rechten Zeit in ein einzelnes Gerät gebündelt wurden sondern zu spät.
  • ich denke man kann schon vergleichen das taten ja die hersteller untereinander auch und ist doch nicht schlimm.

    @Tale-X

    Such dir ein Spiel aus und konvertiere es nach cbm 7.0 Basic

    cpc-power.com/index.php?page=detail&num=3713

    Edit

    Frutty Man ist auch eine gute Wahl.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Bytebreaker ()

  • @trw: vielleicht kommt ja der c128 der ultimativen Maschine recht nahe - wenn man sich mit ihm auseinandersetzt...

    Bytebreaker schrieb:

    ...
    Nachtrag zu Schleifen: Loco kennt if then else. CBM nur if then.
    MÖÖÖÖP... Basic 7.0 (und sicher auch 3.5) kennt bei Fallunterscheidungen auch if then else.

    @oobdoo: genau das wollte ich hören! Möge das Spiel beginnen! :thnks:
  • Tale-X schrieb:

    @oobdoo: genau das wollte ich hören! Möge das Spiel beginnen! :thnks:
    Was Du auch (noch) machen kannst, als Steigerung sozusagen, das wäre Projekt: Snider's Maze nach Loco BASIC zu konvertieren.
    Mitwäre das nicht passiert! :prof:
    :syshack: Meine 3D-Drucker Teile auf thingiverse.com/oobdoo/designs :strom:
    Sammlung | 91 Bücher bzw. 25.261 Buchseiten mit Z80/8080 Power