Hallo , guten Tag.
Wie kann man die "Graphic 1" mit ASM evtl über den TED einschalten oder anderweitig ?
Ich habe nichts gefunden.
Danke.
GRuss
Du bist in Begriff, Forum64 zu verlassen, um auf die folgende Adresse weitergeleitet zu werden:
Bitte beachte, dass wir für den Inhalt der Zielseite nicht verantwortlich sind und unsere Datenschutzbestimmungen dort keine Anwendung finden.
letzter Beitrag von spacer am
Hallo , guten Tag.
Wie kann man die "Graphic 1" mit ASM evtl über den TED einschalten oder anderweitig ?
Ich habe nichts gefunden.
Danke.
GRuss
Danke für die Info.
Die Tabelle hatte ich schon.
Wenn ich bei $ff06 Bit 5 setze wird umgeschaltet und es erscheint der hellblaue Hintergrund und stürtz ab.
Danke.
Gruss
Du musst schon das richtige Bit5 nehmen (%00100000).
Das ist kein Absturz. Du siehst jetzt einfach das, was im Speicher steht wenn TED ihn als Bitmap sieht. Allerdings wird der BASIC-Anfang auch nicht verlegt womit sich da was überschneidet.
Wenn du wieder auf den normalen Modus zurückschaltest sollte der Rechner noch laufen.
Wie muss ich jetzt bitte den Basicspeicher verlegen in ASM , damit ich den Grafikspeicher habe um damit zu arbeiten ab Adresse 8192?
Danke.
Gruss
Da Du ja deine Anwendung in Maschinensprache schreiben willst, sollte es egal sein wo der Speicher für BASIC-Programme liegt, und letztendes ist das für die Problemstellung auch gar nicht relevant.
An dieser Stelle bleibt nur der erneute Hinweis, daß Du dich mit der Registerbelegung des TED auseinandersetzen solltest, damit der TED-Chip die Bitmap und den Speicher für die Farb-Informationen da findet, wo Du diese ablegst. Du kannst nicht ernsthaft erwarten, daß man dir hier das auch noch einzeln vorkaut, vor allem dann nicht, wenn auch gar nicht erkennbar ist, was Du überhaupt vorhast.
So long...
Alles anzeigen
LIMITING THE BASIC MEMORY
LET'S START WITH THE END
Basic programs use the free memory while running. If you have stored your own
machine language programs into the memory or your own character set, you have to
inform Basic not to use that area of memory, or otherwise Basic will overwrite
your machine language programs or your character set with temporary data.
To protect your machine language programs and/or your custom character set, the
easiest way is to place them at the end of the memory and to inform Basic that the
memory available for Basic ends right before your machine language programs and/or
custom character set begins.
The highest address of Basic memory can be read and set through memory
locations 55 and 56. Location 55 contains the lower 8 bits of the address and 56
the upper 8 bits.
To read the current "Top of Basic memory" (=end position), type the following line
in Basic and press Return:
PRINT PEEK(55) + PEEK(56) * 256
To protect your machine language programs and/or custom character set, follow
9
these steps:
1. Calculate the total size needed for your machine language programs
and/or custom character set. (SIZE)
2. Get the "top of Basic memory", as instructed earlier. (TOBM)
3. Calculate new "top of Basic memory" (NTOBM): TOBM - (SIZE + 1).
4. Calculate low and high parts of the NTOBM:
HI = INT(NTOBM / 256)
LO = NTOBM - (HI * 256)
5. Set new "top of Basic memory":
POKE
55, LO
POKE 56, HI
CLR
Note! The CLR statement at the end of step 5 is essential. It sets a lot of
pointers used by Basic to the "top of Basic memory" and Basic will crash unless it
is executed after the POKEs.
Note! If you have a Plus/4 and want your program to be C16 compatible, then
instead of calculating from the real top (end) of memory (64768), calculate from
16374 instead.
ON THE OTHER SIDE
You can also move the start of the basic memory instead, but that is a bit more
difficult as the whole basic program then needs to be moved. You can alter the
start position of the basic memory this way:
POKE
44,x : POKE x*256,0 : NEW
...and the basic memory will then start at x*256. If x for example is 32, then the
basic memory will start at 32*256=8192. But as a NEW command is used, it is tricky
to do this at run time. It needs
multi part
loading,
poking
into the keyboard
buffer etc, or another trick is to have two basic programs in memory where one is
starting the other one... Complicated stuff... but on the expanded vic-20 this is
quite common as the vic chip only can address the first internal 5K and not the
expanded higher memory. But anyway, for us, it's much easier to move the end limit
of the memory instead, as described above... except for if you use the following
little trick on the Plus/4:
GRAPHIC1:GRAPHIC0
...Then (as described in the Basic 3.5 document under GRAPHIC), the whole basic
program is moved at runtime from 4097 to 16385 taking 12kb from the basic memory.
If you don't use the graphics, you can use this 12kb area for other things. And
even if you use the graphics, the 2kb area 4097-6143 is still unused and available
for other things. But this approach will give programs that NOT are compatible
with the C16! Well, as long as you don't use the extra 4097-6143 area and only the
10kb graphics area, then it's C16 compatible, but then you will only have 2kb left
for the basic...
Zitat
Fulgore:OT entfernt
ZitatDa Du ja deine Anwendung in Maschinensprache schreiben willst, sollte es egal sein wo der Speicher für BASIC-Programme liegt
Eben nicht beim Plus4. Im Textmodus beginnt er ab $1001 und im Grafikmodus ab $4000.
Danke.
Gruss
Das was ich möchte habe ich gleich im ersten Satz angesprochen. darum habe ich den Thread eröffnet.
Edit Moderation: Bitte keine Beleidigungen gegenüber anderen Mitmenschen. Bitte unbedingt die Forenregeln beachten!
Gruss