home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1990 September / 64er_Magazin_90-09_1990_Markt__Technik_de_Side_A.d64 / c64-ham.src < prev    next >
Text File  |  2022-10-26  |  2KB  |  131 lines

  1.  
  2. :tb18=$c400
  3. :tb11=$c500
  4.  
  5. org $c000
  6.  
  7. sei
  8. ldx #0
  9. :tbgl
  10. txa
  11. clc
  12. adc #1
  13. and #7
  14. ora #$38
  15. sta tb11,x ;d011 funktionstabelle
  16. txa        ;generieren
  17. adc #1
  18. asl
  19. asl
  20. asl
  21. asl
  22. ora #8
  23. and #$7f
  24. sta tb18,x   ;d018 adresstabelle
  25. inx          ;generieren
  26. cpx #200     ;200 rasterzeilen
  27. bne tbgl
  28. lda #$70     ;letzte zeile kein dma
  29. sta tb11+199 ;und restzeilen schwarz
  30. lda #$08     ;sowie ruecksetzen
  31. sta tb18+199 ;von d018
  32.  
  33. lda #<niq    ;neuer irq-vector
  34. sta $314
  35. lda #>niq
  36. sta $315
  37. lda #$1b
  38. sta $d011    ;d011 normal
  39. lda #$18
  40. sta $d016    ;multicolor
  41. lda #0
  42. sta $d015    ;keine sprite-dma stoerung
  43. sta $d021
  44. sta $d020
  45. sta $dc0e    ;timer stop
  46.  
  47. lda #$4c     ;neuer timer wert
  48. sta $dc05    ;fuer ersten irq setzen
  49. lda #$c7-63  ;-63= 1 rasterzeile hoeher
  50. sta $dc04
  51.  
  52. :wl1         ;auf zeile $030
  53. lda $d011    ;(und nicht $130)
  54. bpl wl1      ;warten
  55. :wl2
  56. lda $d011
  57. bmi wl2
  58.  
  59. lda #$30
  60. :wl3
  61. cmp $d012
  62. bne wl3
  63.  
  64. ldx #$11     ;synchronisation des
  65. lda #$18     ;timers auf immer dieselbe
  66. sta $d011    ;horiz. position durch
  67. stx $dc0e    ;dma-zyklen ausgleich
  68.  
  69. lda #$3b     ;hires+normalwert
  70. sta $d011
  71.  
  72. lda $dc0d    ;evntl. altes irq-flag aus
  73.  
  74. lda $dd00    ;bank $4000-$8000
  75. and #$fc     ;anwaehlen
  76. ora #2
  77. sta $dd00
  78.  
  79. cli          ;los geht's
  80. rts
  81.  
  82. :niq
  83. lda #$9f       ;minimalwert der
  84. sec            ;vergangenen zyklen
  85. sbc $dc04      ;abweichung messen
  86. cmp #12
  87. bcc ok
  88. jmp syncerr    ;zuviele zyklen
  89. :ok
  90. lsr            ;haelfte da nop=2 zyk.
  91. bcc onecycle   ;branch=3 zyk.
  92. :onecycle      ;kein branch 2
  93. sta restcycle+1
  94. :restcycle
  95. bpl restcycle  ;einsprung zu nops
  96. nop            ;ausgleich durch nops
  97. nop
  98. nop
  99. nop
  100. nop
  101. nop
  102.  
  103. lda #$30       ;hires display
  104. sta $d011      ;und 1.dma in zeile $30
  105.  
  106. nop            ;weiteres timing
  107. nop
  108. nop
  109. ldx #0         ;tabellenzeiger reset
  110.  
  111. :hamloop       ;erzeugung
  112. lda tb18,x     ;von 200 dma-zeilen
  113. sta $d018      ;mit adressumschaltung
  114. lda tb11,x
  115. sta $d011
  116. inx
  117. cpx #200
  118. bne hamloop
  119.  
  120. :iend
  121. jmp $ea31    ;zur alten irq routine
  122.  
  123. :syncerr     ;timer auf exact
  124. lda #$4c     ;einen bildschirmdurchlauf
  125. sta $dc05    ;stellen
  126. lda #$c7
  127. sta $dc04
  128. jmp iend
  129.  
  130.  
  131.