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 >
File List  |  2022-10-26  |  5KB  |  88 lines

  1.  
  2.  
  3. ready.
  4. 5    -           .base $0c00
  5. 10   -;------------------------------------------------------------------------
  6. 15   -;zweites beispielsprogramm
  7. 20   -;dieses programm kopiert eine speicherseite  einer bank in eine speicher-
  8. 25   -;seite einer bank
  9. 30   -;x: quellpage ;y: zielpage;a: 6.bit:nummer bank quelle,7.bit analog ziel
  10. 35   -;------------------------------------------------------------------------
  11. 40   -;(p)mark hillebrand 1993* greets to jan;armin und kai herbertz;brommundt's
  12. 45   -;------------------------------------------------------------------------
  13. 50   -;------------------------ variablendefinition ---------------------------
  14. 55   -.define mmucopy      = $ff00;adresse der mmu-kopie, die immer sichtbar ist
  15. 60   -.define mmu          = $d500;mmu-basisadresse, im i/o-bereich
  16. 65   -;------------------------------------------------------------------------
  17. 70   -;--------------------------- hauptprogramm ------------------------------
  18. 75   -           sei            ;verbieten, da wegen manipulation sonst absturz
  19. 80   -           sta modia1+1   ;akku retten
  20. 85   -           lda mmucopy    ;konfiguration retten
  21. 90   -           pha 
  22. 95   -           lda #$00
  23. 100  -           sta mmucopy    ;alle roms einschalten
  24. 105  -           sta mmu+6      ;common area ausschalten
  25. 110  -           stx modix1+1   ;retten, notwendig, siehe artikel!
  26. 115  -           stx quellpage+1;retten
  27. 120  -           sty modix2+1   ;retten
  28. 125  -           sty zielpage+1 ;retten
  29. 130  -           tax            ;ram-bank-nummer mit 0 vorbelegen
  30. 135  -modia1     lda #$ff       ;wird modifiziert
  31. 140  -           bmi jump1      ;7.bit testen, springe, wenn ram-bank ziel=1
  32. 145  -           .byte $24      ;bit-trick
  33. 150  -jump1      inx            ;ziel-ram-bank=1
  34. 155  -           stx mmu+10     ;stack-ram-bank einstellen
  35. 160  -           stx zielbank+1 ;retten
  36. 165  -modix2     ldx #$ff       ;wird modifiziert
  37. 170  -           stx mmu+9      ;ziel-page einstellen
  38. 175  -           ldx #$00       ;ram-bank-nummer mit 0 vorbelegen
  39. 180  -           and #%01000000 ;testen bit 6
  40. 185  -           bne jump2      ;springe wenn ram-bank quelle=1
  41. 190  -           .byte $24      ;bit-trick
  42. 195  -jump2      inx            ;quell-ram-bank=1
  43. 200  -           stx mmu+8      ;zeropage-ram-bank einstellen
  44. 205  -           stx quellbank+1;retten
  45. 210  -modix1     ldx #$ff       ;wird modifiziert
  46. 215  -           stx mmu+7      ;quell-page einstellen
  47. 220  -           tsx            ;stapelzeiger holen
  48. 225  -           txa            ;stapelzeiger im y-register speichern
  49. 230  -           tay 
  50. 235  -           ldx #$ff       ;neuen stapelzeiger auf maximum
  51. 240  -           txs 
  52. 245  -schleife   lda $00,x      ;quellbyte holen
  53. 250  -           pha            ;in zielpage speichern
  54. 255  -           dex 
  55. 260  -           bne schleife   ;einmal ueberfluessig, aber schneller als cpx
  56. 265  -           stx mmu+7      ;zeropage wieder auf normal
  57. 270  -           stx mmu+8
  58. 275  -           dex            ;x enthaelt 255
  59. 280  -           txs            ;stapelzeiger jetzt 255
  60. 285  -quellbank  ldx #$ff       ;wird modifiziert
  61. 290  -           stx mmu+10     ;stack einstellen auf quellbank
  62. 295  -quellpage  ldx #$ff       ;wird modifiziert
  63. 300  -           stx mmu+9      ;stack einstellen auf quellseite
  64. 305  -           pla            ;letztes byte holen, stackpointer=0
  65. 310  -           sta modia2+1   ;und retten
  66. 315  -           pla            ;vorletztes byte holen,stackpointer=1
  67. 320  -zielbank   ldx #$ff       ;wird modifiziert
  68. 325  -           stx mmu+10     ;stack einstellen auf zielbank
  69. 330  -zielpage   ldx #$ff       ;wird modifiziert
  70. 335  -           stx mmu+9      ;stack einstellen auf zielseite
  71. 340  -           pha            ;vorletztes byte speichern,stackpointer=0
  72. 345  -modia2     lda #$ff       ;wird modifiziert
  73. 350  -           pha            ;letztes byte speichern,stackpointer=255
  74. 355  -           ldx #$01
  75. 360  -           stx mmu+9      ;alten stack wieder einstellen
  76. 365  -           dex            ;x enthaelt jetzt 0
  77. 370  -           stx mmu+10
  78. 375  -           tya            ;alten stapelzeiger wiederherstellen
  79. 380  -           tax 
  80. 385  -           txs 
  81. 390  -           lda #%00000100 ;common area wieder einstellen
  82. 395  -           sta mmu+6
  83. 400  -           pla            ;alte konfiguration wiederherstellen
  84. 405  -           sta mmucopy
  85. 410  -           cli            ;interrupts wiederzulassen
  86. 415  -           rts            ;und ab ...
  87. 420  -;------------------------------------------------------------------------
  88.