Posts from FloatingRiver in thread "Alles über COMAL 80 V2.01 – Der ultimative Mega-Thread"

    Guten Morgen aus Kroatien!

    Stunden später...

    Ich weiß nicht, worüber ihr euch in den letzten Posts so unterhaltet.

    Aber wenn etwas mit einem Standard-COMAL-Modul "Out-of-the-Box" nicht funktioniert, dann halte ich das für eher grenzwertig.

    Nur meine Meinung. :nixwiss:

    Zusammengefasst, geht es darum ob man mehr aus dem COMAL herausholen kann {Modul und Sprache selbst}

    So wie es bis jetzt steht, geht das sehr wohl und sogar bis 512KB liegen drin.

    Dann habe ich rein zufällig herausgefunden, dass COMAL-80 V2.01 auch Sprites auf dem Textbildschirm unterstützt.

    Dass man Laufschrift verwirklichen kann, dass auch Mehrfarben-Zeichensatz auch kein Problem darstellt.

    Nur, es gibt keine COMAL Befehle dafür. Da hat UniComal geschlafen. {Auch C128 COMAL V2.02 hat da gar nichts!}

    Genauso wie früher Commodore {Microsoft} geschlafen hat bei BASIC 2.0 und auch bei BASIC 7.0

    Wäre doch schön wenn man dafür ein Paket hätte. Dieses dann ins COMAL Modul integriert und auch {irgendwie} .crt aus dem Ganzen macht damit auch Emulatoren in den Genuss von extra COMAL-Funktionalität kommen können.

    Bis vor wenigen Stunden hatte ich keine Ahnung, dass all das mit dem COMAL überhaupt möglich ist bzw. zur Verfügung steht!

    Noch eine Angelegenheit war das COMAL Modul zu zwingen in die REU-RAM umzuziehen, sprich, dass alles dort abgewickelt wird anstelle von $8000 - $BFFF {Commodore C64 RAM, 16KB Block}.

    Wenn das möglich wäre, ohne dass ein Land zugrunde geht, warum nicht?

    Das würde dem COMAL ganze 47KB Arbeitsspeicher gönnen auf dem C64! >>> $801-$BFFF

    Auf jeden Fall, ein Teilerfolg wäre ein Erfolg!

    Natürlich, wenn COMAL "out-of-the-box" mit aktuellem stand bleiben soll und damit die Welt neu zu gestalten, dann muss keiner schwitzen und sich auch nicht besonderen Anstrengungen unterziehen! Auch gut... :D

    Ich meinte mehr RAM also mehr freien Arbeitsspeicher für Commodore C64 in dem COMAL nicht mehr $8000 - $BFFF verwendet, sondern alles IN REU Bereiche auslagert!

    Übrigens, wäre PCBWay nicht in der Lage COMAL-Module zu produzieren?

    Oder ist das jetzt neuerdings COMMODORE Eigentum?

    Ja, auch eine gute Nacht... :zzz:

    Natürlich hat es geklappt! :D

    Also man kann von 96K oder etwas mehr mit SuperChipII auf stolze 512KB gehen.

    Da lässt sich einiges unterbringen.

    Am Schluss werde ich mich doch dazu zwingen zu lernen wie man Pakete erstellt.

    Schade ist es nicht so wie beim AMIGA COMAL wo man mit COMAL COMAL Pakete erstellen kann!

    MultiColorCharacter Mode ist gar nicht abgedeckt vom COMAL {oder ich sehe es wieder nicht}.

    Da muss man sich kaputt POKEN damit man was auf die Beine stellt.

    $8000 - $BFFF, 16KB werden vom COMAL verschlingt!

    Wäre es in der Praxis möglich, diese 16KB auszulagern >>> COMAL >>> REU damit C64er zu mehr Arbeitsspeicher kommt?

    Ich kann mich vorstellen, dass man einiges anpassen müsste.

    Auch weil dann die neuen Pakete nicht mehr so ab $8009 möglich wären und das COMAL Modul selber hat ein paar Bytes ab $8000-$8009 abgespeichert.

    Wenn der Aufwand nicht in die Kategorie UNMÖGLICH hinausläuft, wären das 16KB mehr Arbeitsspeicher für den C64, also ganze 50% mehr als jetzt oder 47KB Speicher für COMAL Programme!

    ClausS {Please login to see this link.}

    Meine Idee war eher dass man diese 16KB dann dem Commodore zur Verfügung stellt und anstelle von 16KB, 32KB ausserhalb des Commodores 64 KB {oder 4x16KB Banks} RAM einblendet. Also in diesem, laut Commodore, "...mehr RAM" Bereich!

    Aber anscheinend ist mehr RAM eigentlich gar nicht mehr RAM als RAM, sondern mehr RAM als REU-RAM etc.

    Mit $d000 geht nicht, meinte ich so was: {Code unten}

    {das ist jetzt kein COMAL Code, sondern C64 damit ich Feinscrolling schnell demonstriere}

    Mit dem COMAL kann ich auf den Register gar nicht zugreifen.


    Entweder mache ich was falsch oder es geht wirklich nicht.

    UPDATE!

    Okay, jetzt habe ich selber gefunden was ich falsch mache bzw. gemacht habe.

    Ich habe nicht POKE 53265,16 direkt eingegeben, sondern zuerst USE System, dann SETPAGE(0) und dann erst POKE 53265,16!

    Das hat dann nicht funktioniert.

    Jetzt habe ich das wiederholt und es ging wieder nicht, auch nicht wenn ich SETPAGE(1,2,3,8) aktivierte...

    Allerdings hat dann SETPAGE($80) gewirkt und nun geht alles.

    {interessant ist, dass es direkt geht, also ohne SETPAGE umzustellen, aber habe das gar nicht so probiert, wie erwähnt!

    Wenigstens weiss ich jetzt wie ich zurück gehen kann wenn ich vorher SETPAGE ändern muss}

    Es hat mich gewundert, dass $d400, also Audio geht, aber $d000 nicht.

    Okay, jetzt bin ich schlauer geworden :D

    Da muss sicher noch was ge-poked werden damit es ruhiger geht, aber es funktioniert...

    UND MICH HAUT ES JETZT DOPPELT UM!!! HAHA...

    {Ich habe die TEXTBILDSCHIRM SPRITES beim C64 nie zum laufen gebracht weil ich SETPAGE verwendete {für Grafik und SPRITES auf dem Grafikbildschirm}... Nach dem ich heute SETPAGE($80) entdeckte, sieht die Welt wieder normal aus!

    Das da ein Zusammenhang besteht, wäre mir nicht mal im Traum eingefallen!

    WUNDERBAR!

    Please login to see this attachment.

    Wird heissen, das hier "...more RAM & 48Mhz Turbo mode" ist zwar eine Banane, aber keine Chiquita!

    Also ist das in etwa so genau, als wenn ich sagen würde: mein C128 hat 256KB RAM und kommt mit 4MHz!

    Einer ist auf dem Tisch und der andere im Schrank.

    Denke Commodore sollte schon ganz genau schreiben was mehr RAM bedeutet und auch was und wo diese 48MHz was machen und was und wo diese 48MHz was nicht machen.

    Eventuell darf COMAL trotzdem profitieren!

    Man hätte sicherlich den Grundwortschatz von COMAL um die Befehle ENGLISH und DANSK erweitern können, dann wären hier keine 'Pakete' notwendig gewesen.

    Aber das macht mMn. doch auch keinen grossen Unterschied.

    Möchte man z.B. ein anderes Sprachpaket nachladen, dann muss dass ja sehr wohl als Paket geschehen.

    Ich denke nicht, dass man die Anzahl der Pakete bei COMAL80 hier in den Vordergrund gestellt hatte, sondern vorgebeugt hatte, dass, wenn man eine Sprache wählt, ein einheitlicher Weg gegangen werden sollte.

    Aber das ist nur meine Meinung.

    Ja, lauft alles als Paket bei COMAL, egal ob ein Befehl, kein oder 50 drin sind.

    Wenn wir schon bei 50 sind, gelesen habe ich, dass man anstelle von 16KB EPROMS, 32KB EPROMS verwenden kann.

    Der neue Commodore C64 kommt mit wesentlich mehr Speicher.

    Es wäre doch ideal diese grössere EPROMS zu verwenden und diese dann beim C64 dort einbinden wo C64 Adressbereiche nicht gestört werden. Somit könnte man dann die COMAL Funktionalität und Möglichkeiten erheblich erweitern.

    {Memory Map müsste natürlich entsprechend angepasst werden. Es ist schon mal gemacht worden und unmöglich ist es also nicht}

    Als Beispiel nenne ich hier mal den Feinscrolling-Register! Der ist jetzt mit SPRITE-DATEN belegt.

    Ich habe alle SETPAGES probiert, aber dieser Register gibt kein Lebenszeichen von sich. Das ist eigentlich nur ein Register.

    Dort sind aber "tausende" Register für COMAL gestorben, ab $d000 {damit 32 Sprites untergebracht werden können}

    In ComalToday fand ich soweit keine Angaben ob dieser Register an andere Stellen verschoben worden sind?

    Die sind irgendwo weil Soundregister sind auch betroffen $d400.

    Mit grösseren EPROMs, könnte dann ein sehr gescheites Köpfchen, COMAL Befehlsumfang erheblich erweitern.

    Somit wäre es dann möglich eigenen Farbbereich für den Grafikbildschirm zu realisieren, alle Register ab $d000 wären verfügbar und damit hätte man ein USE Fun&Cool {:search:} Paket erstellen können {leider machen meine alten grauen Zellen nicht mit bei dem Plan}. TextBildschirm-Sprites, Mehrfarben-Zeichensatz, Feinscrolling in alle Richtungen und und...

    Also COMAL-80 {C64} hat noch extrem viel Potenzial!

    Das war der Plan für die nächste Ausgabe :Peace

    Damit wäre dann diese 'Belästigung' von Zeilendifferenz bei POKE und PRINT AT auch nur eine blasse Erinnerung.

    Man(n) müsste einfach die Text-Variable b$ anpassen und 'regenbogen" abrufen.

    also:

    b$;="das funktioniert aber..."; regenbogen (10,0,5)

    Somit könnte man dann auch bei bedarf verschieden Texte einblenden bzw. verwenden...

    Es müsste allerdings so gemacht werden, damit der PRINT AT nicht 40x oder > geprintet wird, denn das wäre dann Schnecken-rennen.

    Zu den Packages ein Auszug aus dem englischen Handbuch:

    Please login to see this attachment.

    Please login to see this attachment.

    Das fehlt noch:

    {Die Frage ist, wer kam auf die Idee, Sprachpakete ohne Befehle als Pakete zu verpacken damit der Paketen-Welt bei COMAL mächtig aussieht. Das erinnert mich jetzt nicht an die Kühe aus den Western-Filmen, sondern an die kleine Tiere die sich viel grösser machen als sie es eigentlich sind um grössere Raubtiere zu erschrecken! :thumbsup:}

    Also rechnerisch macht das zusammen 12 Pakete und plus RAMFILES {COMAL C128} = 13

    Oder genau genommen 10 echte Kerle und 3 Mädchen beim C128

    Und beim C64 sind es {aktuell} 9 echte Kerle und 3 Mädchen

    Code
    use deutsch
    
    10 print deutsch
    
    run
    
    in 0010: deutsch: unbekannte variable

    Haha... Macht der Gewohnheit {immer wieder}

    Ich gebe am Anfang immer USE SYSTEM und USE GRAPHICS ein weil ich stark davon ausgehe, dass ich irgendwann ein Befehl aus diesen Paketen eingeben werde und dann ist es besser wenn es sofort geht.

    Damit vermeide ich auch die magische Wortwahl: Schei** Paket, nie da wenn man es braucht! :saint: :D

    Das ist besonders dann der Fall wenn ich eine CLOSED Procedure mache.

    Am Anfang habe ich gar nicht gecheckt, dass dort dann nochmals alles rein muss bzw. andere Prozeduren und Funktionen importiert werden müssen.

    Zeile 250!

    Einverstanden, aber meine Gehirnzellen kämpfen noch dagegen an :rauch:

    Wenn ich so was in den Beispielen antreffe, mache ich sofort eine c#:=c#+1 Variante draus.

    Wenn wir schon bei der Zeile 250 gewesen sind, Zeile 270 kann man auch ansprechen!

    Die hab' ich auch ohne Schleife realisiert, aber die Ausführung war so schlecht {sehr langsam}, dass ich mich gewundert habe,

    weil ich dachte ohne der Schleifenverzögerung müsste das eigentlich schneller laufen.

    Allerdings, das Gegenteil war der Fall :schande:

    Code
    0270   for b:=1 to 7 do poke (55296+40*zeile)+b+xa#-start,code(b)

    Schnecken-Tempo-Beispiel {ohne Schleifen}

    Danke für die Aufklärung!

    Also man kann sagen, dass gesuchte elfte Kind ist gar kein 'Kind' bzw. Kinder demzufolge, sondern nur die Bekleidung!

    Oder gar keine Pakete, sondern nur die Schachteln ohne Inhalt.

    Auch wenn jetzt alles sonnenklar zu sein scheint, es juckt mich noch ein kleines Detail!

    "..complete with syntax and example" steht es dort!

    USE Dansk, USE English, USE Deutsch könnte man jetzt noch als Paket durchgehen lassen, weil die als PACKAGES bereits am Anfang aufgelistet sind und mit diesen Zusammen, komme ich sogar auf 13 Pakete bei COMAL-80-V2.02.

    Allerdings beinhalten diese Pakete gar keine Befehle und somit kann es hier keine Syntax oder Example geben.

    Das erinnert mit an alte Western Filme wo man die Kühe schnell an den Fluss gebracht hat {vor dem Verkauf, natürlich :D}

    Also oben sehe ich nur 8 Pakete aufgelistet! Wo ist der Rest geblieben und was war das genau!?

    Nach meiner Zählung gibt es bei COMAL80 V2.01 sieben Pakete.

    So wie bei die Sieben Weltwunder, Schneewittchen und die sieben Zwerge, sieben Tage der Woche, sieben Farben im Regenbogen und die sieben Todsünden.

    Please login to see this attachment.

    Also langsam sind wir auf 10 Packages gekommen! {Da sind wohl benachbarte Zwerge dazu gekommen}

    Hier sind die von C128...

    Aber bis 11 fehlt noch was {rein mathematisch :search:}

    Immer mehr habe ich das Gefühl, das die Jungs bei UniCOMAL die COMAL 8-Bit Welt links liegen gelassen haben,

    und sich hungrig auf die COMAL Amiga 2.03 gestürzt haben, damals 1989. Sogar der Hauptprogrammierer {COMAL CP/M 2.1} war dabei und auch Borge Christensen! So waren halt die Zeiten...

    Aber das elfte Paket muss doch irgendwo sein?!

    COMAL 2/0 kam irgendwo 1984/85 raus?... Und die Rede von 11 Packages war Ende 1988!

    Also da ist irgendwo noch was versteckt oder das COMAL-Modul mit 11 Paketen ist einfach noch nicht aufgetaucht?

    Please login to see this attachment.

    Ich verwende textcolors so gut wie nie {programmiere meistens mit dem C128, 80-Zeichen Bildschirm und habe dann auch noch textmode(0) drin damit es zum 40-Zeichenbildschirm umschaltet}

    Mit individuellen Befehlen habe ich das irgendwie besser unter Kontrolle.

    READ und DATA ... Ja, da bin ich der Macht der Gewohnheit zum Opfer gefallen :whistling:

    Aber, danke! Ich dachte schon keiner schaut sich meine Bemühungen an. :thumbsup:

    Hier noch eine Version, als PROZEDUR:

    Das kann man einfach in eigene Programme einbinden. Keine verschachtelte Schleife mehr reagiert schneller auf key$ abfragen.

    {Start-Variable ist mehr als Null wenn ich Z. Bsp. eine 40 Zeichen Textzeile habe und nicht will, dass die Farben einfach aus dem Nichts auf dem Text erscheinen, sondern, so wie jetzt, drüber fahren. Dann muss ich achten, dass insgesamt drei Zeilen dafür verwendet werden. Beispiel : 40 Zeichen Text, 10 Farben ergibt Start = 10 {mehr geht auch wenn man so eine Art Verzögerung

    haben möchte. Der Text muss also einen Abstand von min. einer {leeren} Zeile haben, oben und unten!}

    "Blättere" wieder die alten ComalToday Zeitungen durch und da hat meine Nase folgendes entdeckt:

    • IBM PC COMAL 2.2 und IBM PC COMAL 2.2 PLUS {mit Compiler}
    • {$500 / $800}
    • Optionen dazu = nochmals > $400
    • Vorstellung: Germany Hannover, 1989
    • = > $800 / $1200 für COMAL auf dem PC
      {Das muss ich sofort dem Urs erzählen!!! Es stand der Verbreitung sicher im Wege}

    Und 'back to the roots'!

    Das hier ist auch interessant:

    $2.95 >>> C64 COMAL 2.0 Keywords!

    Lists all the keywords built into the cartridge! (including all 11 built-in packages) in alphabetic order complete with syntax and example"

    Also oben sehe ich nur 8 Pakete aufgelistet! Wo ist der Rest geblieben und was war das genau!?

    Könnte es sein, dass diese Dinger {3 Pakete} noch im Modul sitzen und keiner weiß es mehr nach Jahrzehnten?

    Nun, COMAL V2.02 {C128} hat noch RAMFILES und demzufolge werden noch 2 Pakete vermisst {oder doch noch 3}??

    Möglich auch, das UniCOMAL das stillschweigend abgespeckt hat oder sich damit gar nicht mehr beschäftigen wollte weil die sich dem AMIGA {V2.03} und IBM gewidmet haben?

    Wer das hier im COMAL-80 ohne POKE & PEEK schafft, bekommt 0.75 Schljiwowica direkt nach Hause geschickt {aus Kroatien!}

    Cooler Effekt! :thumbsup: Da muss ich leider passen. Solche raffinierten Programme bekomme ich weder ohne- noch mit POKE hin. Das ist nur etwas für erfahrene C64-Programmierer. Den Sliwowitz werde ich also leider nicht bekommen. - Wo hast du sowas gelernt?

    Das ist mir vorgestern eingefallen weil man das oft bei den Intros sieht und die sind bekanntlich alle im Assembler geschrieben.

    Dachte mir es kann sicher nicht so schwer sein, so was auch mit COMAL {ansehnlich} auf die Beine zu stellen.

    Code unten {so habe ich alles angefangen}... und Please login to see this link. war dann das Endresultat.

    Keine Ahnung ob man das lernen kann?

    Ich bekomme eine Idee und dann beginnt der Prozess im Kopf wie ich das machen könnte, dann bringe ich das aufs 'Papier' {dafür verwende ich Windows Notepad, also öfters 'programmiere' ich zuerst dort und später kopiere dann alles in den Emulator {VICE}}

    Das mache ich auch so wenn ich kleine Assembler-Routinen erstelle {Monate später wundere ich mich selber wie das erstanden ist}

    Unterwegs fallen mir dann viele Verbesserungsmöglichkeiten ein und aus A wird dann am Schluss ein Z und das macht dann das gleiche Zeug wie A aber anders!

    Übrigens, dieser Code hier unten ist schneller als FOR...ENDFOR Schleifen. Da müsste die Handbremse einspringen!

    Sieht aber nicht so COMAL-Ideal aus {Ja, da denkt bestimmt jemand sofort an BASIC 2.0, ;)}

    An alle COMAL-80 begeisterte Mitglieder!

    Wer das hier im COMAL-80 ohne POKE & PEEK schafft, bekommt 0.75 Schljiwowica direkt nach Hause geschickt {aus Kroatien!}

    Also keine billig Variante, sondern COMAL-80-Qualitäts-Schljiwowica! :zeig::drunk:

    {Ich selber werde es auch probieren! :D}

    Aber: Was wolltest du denn, um Gottes Willen, mit der Taste/dem Character?!? Ich hätte das gar nicht vermisst!

    Ich bastele gerade an einem Texteditor in COMAL. Und da muss ich mir überlegen, welche Zeichen man eintippen darf. Diese werden im Programm als "zulässige Zeichen" definiert. Also z.B. auch ,.!?#@%&-+[]<>() usw. Und ich dachte, es könnte nicht schaden, wenn man den Pfeil-nach-Links auch eingeben darf. - Aber das hat sich jetzt wohl erledigt.

    UniCOMAL fängt da die Abfrage der Tastatur-Matrix ab und macht dann halt was eigenes draus = Unterstrich!

    Aber man kann im Programm selber die Tastatur-Matrix abfangen und auf die entsprechende Taste umleiten = Pfeil nach rechts!

    Ist ganz einfach...

    Natürlich kann man in diesem IF - ENDIF Bereich alles rein schmeißen was man will sobald die Pfeil nach rechts Taste gedrückt wird!

    {Ja, irgendwann werden wir doch alle notgedrungen Kriminell :D}

    Code
    0005 PAGE
    0010 LOOP
    0020  IF PEEK(203)=57 THEN
    0030   PRINT AT 1,1: CHR$(95)
    0040  ENDIF
    0050 ENDLOOP