Bank Switching mit dem ramspeicher

1, 2

von robbifan » Sa 28. Jul 2007, 21:27
he, das geht schlag auf schlag hier. klasse.

mfg

von robbifan » Sa 4. Aug 2007, 21:06
eigenartiges verhalten mit diesen werten im atari800win :
http://www.strotmann.de/twiki/bin/view/ ... SwitchXlXe
800XL 256K Compy Shop :
32, 36, 40, 44
96,100,104,108
160,164,168,172
224,228,232,236

wenn ich diese oberen werte im testprogramm eintrage kommt ungefähr bei bank 8 eine störende pixelinie ungefähr im ersten drittel vom bildschirm.

unten im programm die werte sind jeweils um 2 höher, da kommt diese störende pixellinie nicht.

was ist die ursache ?

Code: Alles auswählen
10 REM Z-RAMTEST
20 REM ROBUE MAERZ 1992
100 GRAPHICS 7+16
110 COLOR 1:PLOT 5,5:DRAWTO 155,5:DRAWTO 155,75:DRAWTO 5,75:DRAWTO 5,5
120 COLOR 3:CIRCLE 80,40,35
130 PAINT 80,40:COLOR 1:PAINT 6,6:PAINT 100,6:COLOR 2:PAINT 0,0
200 RESTORE 1010
210 FOR I=1 TO 16
220   READ BANK
230   POKE 54017,BANK
240   Z=1:COLOR 2:TEXT 50,35,"BANK":TEXT 85,35,I:TEXT 105,35,Z:Z=Z+1
250   MOVE DPEEK(88),16384,7680
260   TEXT 105,35,Z
270   MOVE DPEEK(88),16384+$2000,7680
280 NEXT I
290 POKE 54017,254
300 RESTORE 1010
310 FOR I=1 TO 16
320   GRAPHICS 7+16
330   READ BANK
340   POKE 54017,BANK
350   MOVE 16384,DPEEK(88),7680
355   GET KEY
360   GRAPHICS 7+16
370   MOVE 16384+$2000,DPEEK(88),7680
375   GET KEY
380 NEXT I
390 POKE 54017,254
1000 REM BANKDATEN (COMPY-SHOP)
1010 DATA 238,234,230,226
1020 DATA 174,170,166,162
1030 DATA 110,106,102,98
1040 DATA 46,42,38,34

von PacMan » So 5. Aug 2007, 19:09
Beim TurboBasic wird das interne Basic abgeschaltet und deshalb ändert sich auch der Wert von PB1 bei der Bankanwahl. Wenn Du das Programm ans Basic anpasst geht es mit den anderen Werten.

von robbifan » So 5. Aug 2007, 20:26
das programm ist doch für turbo basic angepasst. die werte im basicprogramm laufen einwandfrei, nur die werte aus der tabelle bringen diesen pixelfehler.

mfg.

von PacMan » So 5. Aug 2007, 20:36
Ein Programm was unter TurboBasic läuft nennt sich immer TurboBasic-Programm weil oft spezielle Befehle benutzt werden die es nur im Turbobasic gibt und die im normalen Basic nicht funktionieren. Also die Werte die jetzt den Fehler verursachen funktionieren nur im Atari Basic. Probiere es einfach mal mit dem eingebauten Atari Basic aus.
Befehle die dafür im normalen Basic geändert oder entfernt werden müssen: PAINT, CIRCLE, DPEEK, TEXT, GET KEY, MOVE

Die Funktion von PORTB ($D301) wird im Profibuch S.82 erklärt. Du schaltest also nicht nur Rambänke damit um.

von robbifan » Mo 6. Aug 2007, 13:12
also sind die strotmann-werte für das eingebaute atari-basic, ach so.

mfg

von Mathy » Mo 6. Aug 2007, 23:33
Hallo PacMan

PacMan hat geschrieben:Beim TurboBasic wird das interne Basic abgeschaltet und deshalb ändert sich auch der Wert von PB1 bei der Bankanwahl.


Ich meine irgendwo (warscheinlich irgendwann mal im ABBUC Mag.) gelesen zu haben, das TurboBASIC einen Trick benutzt, damit es immer noch so aussieht, als währe BASIC eingeschaltet.

Tschüß

Mathy

von PacMan » Di 7. Aug 2007, 12:31
Hallo Mathy,

Falls das irgendwo steht immer her damit. Ich habe eine LED-Anzeige für Basic on/off und im TBasic ist die immer aus. TBasic dürfte ohne den freien Speicher der sonst vom Basic belegt wird auch nicht laufen.

Gruß,
Steffen

von Mathy » Di 7. Aug 2007, 18:08
Hallo Steffen

Danke für die Herausforderung. Hab's gefunden.

Im ABBUC Mag 27 steht auf Seite ... Ups, die waren noch nicht nummeriert. Aber in Artikel "Benutzung von Zusatz-RAM" van Roland Bühler steht im Absatz genau über "4. Probleme" folgenden Text:

---Zitat---

Die Bänke werden wie unter BASIC ein- bzw. ausgeschaltet. Jedoch ist die Rechner-Konfiguration unter Turbo-Basic anders. Das OS und das Basic ist abgeschaltet, was sich dadurch äußert, daß man eigenlich die jeweiligen Bank-Werte um den Wert 1 erhöhen muß, denn:

Basic:
OS ein => Bit 1 = 1
Basic ein => Bit 2 = 0
macht zusammen (1*2^0)+(0*2^1)=1

Turbo-Basic:
OS aus => Bit 1 = 0
Basic aus => Bit 2 = 1
macht zusammen (0*2^0)+(1*2^1)=2
=> Alle Bankwerte sind in Turbobasic um 1 größer.

Aber große Überraschung:
POKE 54017,237 und dann PRINT PEEK(54017) ergibt unter Turbobasic nicht wie erwartet 237 sondern 238. Das Turbobasic sorgt per Interrupt ständig für die richtigen Werte von Bit 1 und 2 der PIA. Sie werden immer dazumaskiert. Also kann man theoretisch auch mit den Bankwerten vom "normalen" Basic arbeiten.

---Zitat-Ende---

Tschüß

Mathy
1, 2