PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 255 Byte Assemblerprogramm zu lang?



jörg
14.02.2004, 21:01
Mein Assembler-Programm ist genau 255 Bytes lang, belegt also die Adressen $H0101 bis $H01FF (inklusive), und ich übersetze es mit AS80.

Wenn ich in CBASIC die S19-Datei anhänge, kriege ich beim Compilieren die Fehlermeldung "Assemblerprogramm zu lang".
Wenn ich willkürlich das Prog um 1 Byte verkürze, kommt die Fehlermeldung nicht mehr (ist aber eigentlich nicht die Lösung: ich lege schon einen gewissen Wert auf das letzte Byte, hatte mich ja extra dazu aufgerafft).

Frage: Dürfen Assembler-Programm nur max 254 Bytes lang sein?

jörg
16.02.2004, 13:48
andyoo1 schreibt hier (https://www.roboternetz.de/phpBB2/viewtopic.php?p=4879&sid=2fd5542b847f69dba7008afab2f09b27#4874) auch, dass er nur 254 Byte laden kann, nicht 255.

Helft uns doch bitte:
Dürfen Assembler-Programm nur max 254 Bytes lang sein?

(Ich schmeiss die CC1 wegen einem Byte weniger nicht weg, aber vielleicht mach ich bloss was falsch...)

Danke!

andyoo1
17.02.2004, 17:35
Hi

schau mal unter http://www.wolfgang-back.com/PDF/Assembler.pdf

21.02.2004, 19:26
ok also 253 bytes .. aber warum, das interne eeprom is ja 256 byte groß und ein byte wird für das option register verwendet!

außerdem, wozu sind der non-protected und protected bereich, das assembler-programm liegt ja in beiden drin.

jörg
21.02.2004, 19:45
Ich finde den Verweis sehr gut,
aber das mit den 253 Bytes stimmt meines Erachtens nicht.

Zumindest ist mein Programm "nach Abspecken um ein fast überflüssigen Byte" genau 254 Bytes lang. Es lässt sich laden, läuft (zumindest bisher),
und ich hab nirgend wo einen Hinweis finden können, dass am Ende der 256 EEPROM Bytes eins oder gar zweie für irgend jemanden reserviert seien.

Conrad schreibt in der Doku von 256 freien Bytes; ich denke, das stimmt auch nicht, wegen dem OPTR. Obwohl das OPTR eigentlich bei power-on und reset gelatcht wird. -- Für Programme geht's damit jedenfalls nicht.

Den Sinn des OPTR verstehe ich so:
man kann damit verhindern, dass Teile des EEPROM (versehentlich) überschrieben / geladen werden. Dazu muss man dieses Byte entsprechend setzen, und ab dem nächsten power-on/reset gilt der so eingestellte Schutz.
Könnte man mal ausprobieren, ist aber während der Programm-Entwicklung wohl eher hinderlich...

Also: Ungeklärt (für mich)

21.02.2004, 20:31
nochmal zurück zu dem protected bereichen, wozu sind die?
und was passiert bei nem latch genau?

jörg
21.02.2004, 21:38
Protected:
Man kann verhindern, dass der Bereich von $0120 bis $01ff verändert wird. Dazu muss das "EEPROM ProtectionBit" Bit im OPTR auf 0 gesetzt sein.

Latch:
Bei Power-On oder Reset liest der MC den (gerade aktuellen) Wert des OPTR und hält ihn in ein Hilfsregister fest ("Latch"). Ab jetzt gilt nur noch der Inhalt dieses Latch: wenn das OPTR jezt geändert wird, wirkt sich das erst nach dem nächsten Power-On / Reset aus.