home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1990 May / 64er_Magazin_90-05_1990_Markt__Technik_de_Side_A.d64 / nofreeze.src (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  3KB  |  100 lines

  1. 10 sys9*4096
  2. 20 .opt oo
  3. 30 *=$c000
  4. 40 ;
  5. 50 irqvek = $0314   ; vektor auf irq-routine
  6. 60 vicreg = $d011   ; vic-controllregister 1
  7. 70 raster = $d012   ; aktuelle rasterzeile
  8. 80 irqfrq = $dc04   ; register fuer irq-frequenz (lo/hi)
  9. 90 ciactl = $dc0e   ; cia1-controllregister
  10. 100 nrmirq = $ea31  ; normale irq-routine
  11. 110 reset  = $fce2  ; reset-routine
  12. 120 ;
  13. 130 line = 250      ; rasterzeile fuer interrupt
  14. 140 ;
  15. 150 lda #0          ; cia-interrupts
  16. 160 sta ciactl      ; sperren
  17. 170 lda #<rout      ; irq-vektor
  18. 180 ldx #>rout      ; auf eigene
  19. 190 sta irqvek      ; routine
  20. 200 stx irqvek+1    ; biegen
  21. 210 lda #199        ; cia-interrupt-frequenz
  22. 220 ldx #76         ; auf ungefaehr
  23. 230 sta irqfrq      ; 50 hz stellen
  24. 240 stx irqfrq+1    ; (so wie bei raster-irq)
  25. 250 i1 lda vicreg   ; warten, bis rasterzeile
  26. 260 bpl i1          ; >255
  27. 270 i1a lda vicreg  ; warten, bis rasterzeile
  28. 280 bmi i1a         ; wieder =0
  29. 290 lda #line-5     ; warten, bis rasterstrahl
  30. 300 i2 cmp raster   ; 5 zeilen unter der
  31. 310 bne i2          ; gewuenschten zeile ist
  32. 320 lda #1          ; cia-interrupts
  33. 330 sta ciactl      ; wieder freigeben
  34. 340 rts
  35. 1000 ;
  36. 1010 rout lda raster; momentane rasterzeile
  37. 1020 cmp #line-5    ; = startzeile?
  38. 1030 beq ok         ; wenn ja, dann zu ok
  39. 1040 ldx #8         ; verzoegern, bis rasterstrahl
  40. 1050 c1 dex         ; naechste zeile
  41. 1060 bne c1         ; erreicht hat
  42. 1070 lda raster     ; momentane rasterzeile
  43. 1080 cmp #line-4    ; = startzeile-1? (zur sicherheit)
  44. 1090 beq ok         ; wenn ja, dann zu ok
  45. 1100 jmp reset      ; wenn nein, dann reset (=> freezeschutz)
  46. 1110 ok lda #line-3 ; dafuer sorgen,
  47. 1120 w1 cmp raster  ; dass die ge-
  48. 1130 bne w1         ; wuenschte raster-
  49. 1140 ldx #10        ; zeile (line) ab-
  50. 1150 w2 dex         ; solut flimmerfrei
  51. 1160 bne w2         ; angesprungen wird
  52. 1170 nop            ; (nachzulesen in
  53. 1180 lda raster     ; 64'er 06/89,
  54. 1190 cmp #line-2    ; seite 90 ff)
  55. 1200 beq w3         ;
  56. 1210 bit 2          ;
  57. 1220 nop            ;
  58. 1230 w3 ldx #9      ;
  59. 1240 w4 dex         ;
  60. 1250 bne w4         ;
  61. 1260 nop            ;
  62. 1270 nop            ;
  63. 1280 nop            ;
  64. 1290 lda raster     ;
  65. 1300 cmp #line-1    ;
  66. 1310 beq w5         ;
  67. 1320 bit 2          ;
  68. 1330 w5 ldx #10     ;
  69. 1340 w6 dex         ;
  70. 1350 bne w6         ;
  71. 1360 nop            ;
  72. 1370 lda raster     ;
  73. 1380 cmp #line      ;
  74. 1390 bne w7         ;
  75. 1400 w7 ldx #5      ;
  76. 1410 w8 dex         ;
  77. 1420 bne w8         ;
  78. 1430 nop            ; nochmals
  79. 1440 nop            ; verzoegern
  80. 1450 nop            ;
  81. 1460 nop            ;
  82. 1470 nop            ;
  83. 1480 nop            ;
  84. 1490 ;
  85. 1500 ; ab hier folgt dann die haupt-
  86. 1510 ; raster-interrupt-routine, die so
  87. 1520 ; wie normal programmiert werden
  88. 1530 ; kann, nur braucht man das irq-
  89. 1540 ; request-register nicht mehr zu
  90. 1550 ; loeschen
  91. 2000 ;
  92. 2010 main lda #19   ; bildschirm auf 24
  93. 2020 sta vicreg     ; zeilen schalten
  94. 2030 ldx #14        ; verzoegern
  95. 2040 l1 dex         ;
  96. 2050 bne l1         ;
  97. 2060 lda #27        ; wieder auf 25 zeilen
  98. 2070 sta vicreg     ; zurueckschalten
  99. 2080 jmp nrmirq     ; zur normalen interrupt-routine
  100.