freier speicher beim atari800 emu


freier speicher beim atari800 emu

von robbifan » Di 19. Jun 2007, 20:28
hallo, wo fängt der basicspeicher an und wo hört er auf?
wo finde ich den restlichen freien speicher um dort asm-variablen und asmcode reinzubringen, evtl auch einen 2. screen unterzubringen.

hat der screen grundsätzlich beim starten einen festen bereich?

mfg

von FlorianD » Di 19. Jun 2007, 22:44
für kleine Assemblerprogramme eigent sich die sogenannte "Page 6", das sind die 256 Bytes nach $0600. Die läßt das DOS sowie das ATARI Basic und TurboBasic frei.

Freie Bytes bei beiden Basics zeigt dir der Befehl
PRINT FRE(0)
dann RETURN drücken, an

Ansonsten gibt es noch die Speicherstellen MEMLO und HIMEM, siehe zB Profibuch oder ATARI Intern (Data Becker Verlag), die zeigen untere und obere Grenze des freien Speichers.

Willst Du in Basic RAM reservieren, nimm Speicherstelle 106. Um z.B. 4 pages=1924 Bytes (zB für einen Zeichensatz) zu reservieren macht man folgendes:

100 POKE 106,PEEK(106)-4:GRAPHICS 0

Der Graphicsbefehl erzwingt ein Neuberechnen und -belegen des Bildspeichers. Danach ist ab Speicherstelle PEEK(106)*256 1KByte reserviert und wird vom Programm nicht überschrieben.

Vorsicht! Änderst Du danach den Graphicmodus in einen anderen, der mehr Speicher benötigt, wird der Bereich angegriffen. Also deswegen gleich den Graphicbefehl nutzen, der im Programm den meisten Speicher belegt.

von robbifan » Di 19. Jun 2007, 22:57
wo finde ich 8kb für einen 2. grafikscreen?

kann man in den einzelnen rambanken über den 64kb-bereich irgendwie den interpreter-turbobasiccode unterbringen. das man in den 16kb immer ein abgeschlossenes basicprogramm hat, welches beim bankaufruf irgendwei gestartet werden kann oder dahinkopieren, wo es startfähig ist.

mfg

von robbifan » Mi 20. Jun 2007, 23:36
Willst Du in Basic RAM reservieren, nimm Speicherstelle 106. Um z.B. 4 pages=1024 Bytes (zB für einen Zeichensatz) zu reservieren macht man folgendes:

100 POKE 106,PEEK(106)-4:GRAPHICS 0


wie kann ich mir jetzt die startadresse von diesem bereich ausgeben?

mfg

von Heaven_tqa » Do 21. Jun 2007, 16:36
peek(106)*256?

von PacMan » Mi 27. Jun 2007, 18:40
Hallo Robbifan,

Im Basic (Dos 2.5) fängt der Speicher bei $2080 mit Programm, Arrays und Basic-Stack an. Das Grafik-RAM ist vor dem Basic-ROM das bei $A000 anfängt. Freier Speicher =$2080-$A000
Das Turbo-Basic fängt bei $3629 mit Programm, Arrays und Basic-Stack an. das Grafik-RAM ist vor dem OS-ROM/Interpreter das bei $C000 anfängt. Freier Speicher =$3629-$C000

Gruß,
Steffen

von robbifan » Mi 27. Jun 2007, 21:30
jup, danke.

mfg