Edilbert / BSA

Bit Shifter's Cross Assembler for 6502, 65C02 and 45GS02 CPU
The Unlicense
29 stars 7 forks source link

Some points to possible enhancements #7

Closed petersieg closed 3 years ago

petersieg commented 3 years ago

Danke. Sehr interessant. Warum man >2000 Zeilen C Code schreiben kann, aber keine 20 Zeilen readme.txt entzieht sich allerdings meinem Verständnis :-( Das am Anfang des C Sourcecodes vieles steht ist gut!

Aber gerade .STORE ist da angegeben mit: .STORE BASIC_ROM,$2000,"basic.rom" write binary image file "basic.rom"

Aber erst nach dem Studium des Quelltextes, kann ein C Sourcecode Leser sehen: char ParseStoreData(char p) { int Start,Length,i; char Filename[80];

if (Phase < 2) return p; p = EvalOperand(p,&Start,0); if (Start < 0 || Start > 0xffff) { ErrorMsg("Illegal start address for STORE %d\n",Start); exit(1); } p = NeedChar(p,','); if (!p) { ErrorMsg("Missing ',' after start address\n"); exit(1); } p = EvalOperand(p+1,&Length,0); if (Length < 0 || Length > 0x10000) { ErrorMsg("Illegal length for STORE %d\n",Length); exit(1); } p = NeedChar(p,','); if (!p) { ErrorMsg("Missing ',' after length\n"); exit(1); } p = NeedChar(p+1,'"'); if (!p) { ErrorMsg("Missing quote for filename\n"); exit(1); }

=> d.h.: ;.STORE ,,"filename" .STORE $280,$100,"out.bin"

Dabei MUSS man eine Länge angeben - für Eproms sicher ok. Für raw binare aber blöd. Hier fehlt ein Parameter, der als Platzhalter für die Filelänge dient!

Genauso die Startadresse - kann mal doch aus der ORG / = Anweisung nehmen.. (z.B. -1 für beide = Start aus org/= oder 0 und Länge = Binärlänge)

Noch ein weiterer Punkt. Source muss zwingend .asm heißen. Stört nicht, muss man aber wissen und finde ich blöd.

Ansonsten schöner Assembler!

LG Peter

Edilbert commented 3 years ago

Hallo Peter,

Am 04.12.2020 um 11:59 schrieb Peter Sieg notifications@github.com:

Danke. Sehr interessant. Warum man >2000 Zeilen C Code schreiben kann, aber keine 20 Zeilen readme.txt entzieht sich allerdings meinem Verständnis :-(

Bisher ist die Zahl der Benutzer sehr überschaubar, weshalb ich auch das Schreiben eines Handbuchs immer wieder verschoben habe, da ich Fragen dazu direkt beantworte. Ich habe den Assembler für mich selbst geschrieben, bin aber immer wieder auf Wünsche und Anregungen anderer eingegangen, um ihn zu verbessern und benutzer-freundlicher zu machen.

Aber gerade .STORE ist da angegeben mit: .STORE BASIC_ROM,$2000,"basic.rom" write binary image file "basic.rom"

=> d.h.: ;.STORE ,,"filename" .STORE $280,$100,"out.bin"

Dabei MUSS man eine Länge angeben - für Eproms sicher ok. Für raw binare aber blöd. Hier fehlt ein Parameter, der als Platzhalter für die Filelänge dient!

Ich mache das üblicherweise so:

START = $0801

........

EndOfProgram

Somit ist die Länge nicht fix, sonder kann automatisch gesetzt werden.

Genauso die Startadresse - kann mal doch aus der ORG / * = Anweisung nehmen..

Es gibt sehr oft mehrere .ORG und mehrere .STORE Anweisungen in einem Quellcode.

Noch ein weiterer Punkt. Source muss zwingend .asm heißen.

Das macht Sinn, wenn man Editoren mit Syntax-Highlighting benutzt, die an der Endung erkennen, welcher Syntaxfile zu verwenden ist. Ich verwende den "vim" Editor mit einem selbst erstellten Syntax-File, der auch die Mnemonics des 65C02 und 45GS02 (MEGA65 und Commodore C65) kennt.

Stört nicht, muss man aber wissen und finde ich blöd.

Ich bin eher motiviert auf Änderungs- und Verbesserungsvorschläge einzugehen, wenn jemand einen guten Voschlag macht, statt etwas "blöd" zu finden.

Viele Grüße, Edilbert

petersieg commented 3 years ago

Hallo Edilbert.

Danke für die Erklärungen.

Das ist ein guter Hinweis: START = $0801

Evtl. bitte als wichtigen Hinweis ergänzen.

Und ja. „blöd“ muss nicht sein. Da hast du Recht.

LG Peter

Gesendet von myMail für iOS

Freitag, 4. Dezember 2020, 12:32 +0100 von notifications@github.com notifications@github.com:

Hallo Peter,

Am 04.12.2020 um 11:59 schrieb Peter Sieg notifications@github.com:

Danke. Sehr interessant. Warum man >2000 Zeilen C Code schreiben kann, aber keine 20 Zeilen readme.txt entzieht sich allerdings meinem Verständnis :-(

Bisher ist die Zahl der Benutzer sehr überschaubar, weshalb ich auch das Schreiben eines Handbuchs immer wieder verschoben habe, da ich Fragen dazu direkt beantworte. Ich habe den Assembler für mich selbst geschrieben, bin aber immer wieder auf Wünsche und Anregungen anderer eingegangen, um ihn zu verbessern und benutzer-freundlicher zu machen.

Aber gerade .STORE ist da angegeben mit: .STORE BASIC_ROM,$2000,"basic.rom" write binary image file "basic.rom"

=> d.h.: ;.STORE ,,"filename" .STORE $280,$100,"out.bin"

Dabei MUSS man eine Länge angeben - für Eproms sicher ok. Für raw binare aber blöd. Hier fehlt ein Parameter, der als Platzhalter für die Filelänge dient!

Ich mache das üblicherweise so:

START = $0801

  • = START .STORE START,EndOfProgram-START,"program.prg"

........

EndOfProgram

Somit ist die Länge nicht fix, sonder kann automatisch gesetzt werden.

Genauso die Startadresse - kann mal doch aus der ORG / * = Anweisung nehmen..

Es gibt sehr oft mehrere .ORG und mehrere .STORE Anweisungen in einem Quellcode.

Noch ein weiterer Punkt. Source muss zwingend .asm heißen.

Das macht Sinn, wenn man Editoren mit Syntax-Highlighting benutzt, die an der Endung erkennen, welcher Syntaxfile zu verwenden ist. Ich verwende den "vim" Editor mit einem selbst erstellten Syntax-File, der auch die Mnemonics des 65C02 und 45GS02 (MEGA65 und Commodore C65) kennt.

Stört nicht, muss man aber wissen und finde ich blöd.

Ich bin eher motiviert auf Änderungs- und Verbesserungsvorschläge einzugehen, wenn jemand einen guten Voschlag macht, statt etwas "blöd" zu finden.

Viele Grüße, Edilbert

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub (https://github.com/Edilbert/BSA/issues/7#issuecomment-738734564), or unsubscribe (https://github.com/notifications/unsubscribe-auth/AD64XEK3TYUDFSP7KYWJ6R3STDCE3ANCNFSM4UNI75LA).

Edilbert commented 3 years ago

Ich habe mit dem Schreiben eines Handbuchs für den Assembler begonnen. Die Restriktion, den Source Code mit der Extension ".asm" zu erwarten, habe ich aufgehoben. Dafür triggert jetzt die Extension ".src" einen Kompatibiltätsmodus zu dem Assembler BSO = Boston Systems Office (BSO) relocating cross assembler (“CY6502”) running on a DEC-VAX with operating system VMS. Dieser Assembler wurd 1990/1991 benutzt, um die Sourcodes für den Commodore 65 zu assemblieren. Damit ist es jetzt möglich, die alten Sourcen mit dem BSA zu assemblieren.