home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1993 November
/
64er_Magazin_93-11_1993_Markt__Technik_de_Side_A.d64
/
pagecopy.lst
< prev
next >
Wrap
File List
|
2022-10-26
|
5KB
|
88 lines
ready.
5 - .base $0c00
10 -;------------------------------------------------------------------------
15 -;zweites beispielsprogramm
20 -;dieses programm kopiert eine speicherseite einer bank in eine speicher-
25 -;seite einer bank
30 -;x: quellpage ;y: zielpage;a: 6.bit:nummer bank quelle,7.bit analog ziel
35 -;------------------------------------------------------------------------
40 -;(p)mark hillebrand 1993* greets to jan;armin und kai herbertz;brommundt's
45 -;------------------------------------------------------------------------
50 -;------------------------ variablendefinition ---------------------------
55 -.define mmucopy = $ff00;adresse der mmu-kopie, die immer sichtbar ist
60 -.define mmu = $d500;mmu-basisadresse, im i/o-bereich
65 -;------------------------------------------------------------------------
70 -;--------------------------- hauptprogramm ------------------------------
75 - sei ;verbieten, da wegen manipulation sonst absturz
80 - sta modia1+1 ;akku retten
85 - lda mmucopy ;konfiguration retten
90 - pha
95 - lda #$00
100 - sta mmucopy ;alle roms einschalten
105 - sta mmu+6 ;common area ausschalten
110 - stx modix1+1 ;retten, notwendig, siehe artikel!
115 - stx quellpage+1;retten
120 - sty modix2+1 ;retten
125 - sty zielpage+1 ;retten
130 - tax ;ram-bank-nummer mit 0 vorbelegen
135 -modia1 lda #$ff ;wird modifiziert
140 - bmi jump1 ;7.bit testen, springe, wenn ram-bank ziel=1
145 - .byte $24 ;bit-trick
150 -jump1 inx ;ziel-ram-bank=1
155 - stx mmu+10 ;stack-ram-bank einstellen
160 - stx zielbank+1 ;retten
165 -modix2 ldx #$ff ;wird modifiziert
170 - stx mmu+9 ;ziel-page einstellen
175 - ldx #$00 ;ram-bank-nummer mit 0 vorbelegen
180 - and #%01000000 ;testen bit 6
185 - bne jump2 ;springe wenn ram-bank quelle=1
190 - .byte $24 ;bit-trick
195 -jump2 inx ;quell-ram-bank=1
200 - stx mmu+8 ;zeropage-ram-bank einstellen
205 - stx quellbank+1;retten
210 -modix1 ldx #$ff ;wird modifiziert
215 - stx mmu+7 ;quell-page einstellen
220 - tsx ;stapelzeiger holen
225 - txa ;stapelzeiger im y-register speichern
230 - tay
235 - ldx #$ff ;neuen stapelzeiger auf maximum
240 - txs
245 -schleife lda $00,x ;quellbyte holen
250 - pha ;in zielpage speichern
255 - dex
260 - bne schleife ;einmal ueberfluessig, aber schneller als cpx
265 - stx mmu+7 ;zeropage wieder auf normal
270 - stx mmu+8
275 - dex ;x enthaelt 255
280 - txs ;stapelzeiger jetzt 255
285 -quellbank ldx #$ff ;wird modifiziert
290 - stx mmu+10 ;stack einstellen auf quellbank
295 -quellpage ldx #$ff ;wird modifiziert
300 - stx mmu+9 ;stack einstellen auf quellseite
305 - pla ;letztes byte holen, stackpointer=0
310 - sta modia2+1 ;und retten
315 - pla ;vorletztes byte holen,stackpointer=1
320 -zielbank ldx #$ff ;wird modifiziert
325 - stx mmu+10 ;stack einstellen auf zielbank
330 -zielpage ldx #$ff ;wird modifiziert
335 - stx mmu+9 ;stack einstellen auf zielseite
340 - pha ;vorletztes byte speichern,stackpointer=0
345 -modia2 lda #$ff ;wird modifiziert
350 - pha ;letztes byte speichern,stackpointer=255
355 - ldx #$01
360 - stx mmu+9 ;alten stack wieder einstellen
365 - dex ;x enthaelt jetzt 0
370 - stx mmu+10
375 - tya ;alten stapelzeiger wiederherstellen
380 - tax
385 - txs
390 - lda #%00000100 ;common area wieder einstellen
395 - sta mmu+6
400 - pla ;alte konfiguration wiederherstellen
405 - sta mmucopy
410 - cli ;interrupts wiederzulassen
415 - rts ;und ab ...
420 -;------------------------------------------------------------------------