home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 27 / 64er_Magazin_Sonderheft_27_19xx_Markt__Technik_de_Disk_2_of_2_Side_A.d64 / alley.src < prev    next >
Text File  |  2022-10-26  |  4KB  |  97 lines

  1. ;        ******************************
  2. ;        **                          **
  3. ;        **        alley. sim.       ** 
  4. ;        **                          **
  5. ;        **            by            **
  6. ;        **                          **
  7. ;        **     stefan landfried     **
  8. ;        **                          **
  9. ;        **   (c)  markt & technik   **
  10. ;        **                          **
  11. ;        **        verlags ag        **
  12. ;        **                          **
  13. ;        ******************************
  14. ;
  15. org $c000               ; anfangsadresse = 49152
  16. :getbyt = $b79e         ;adressen fuer parameteruebergabe
  17. :chkkom = $aefd
  18.          jsr chkkom     ;programmstart und abfrage
  19.          jsr getbyt     ;der verschiedenen parameter
  20.          stx modify1+1  ; rasterzeilenpositionen
  21.          stx modify2+1  ; des farbscrolles modifizieren
  22.          jsr chkkom     ; auf komma pruefen
  23.          jsr getbyt     ; parameter holen
  24.          stx modify3+1  ; geschwindigkeit modifizieren
  25.          jsr chkkom     ; auf komma pruefen
  26.          jsr getbyt     ; parameter holen
  27.          stx modify4+1  ; breite  modifizieren
  28.          jsr chkkom     ; auf komma pruefen
  29.          jsr getbyt     ; parameter hohlen
  30.          stx modify5+1  ; und modifizieren
  31.          sei            ; interrupt sperren
  32.          lda $dc0d      ; cia-timer
  33.          and #%01111111 ; ausschalten
  34.          ora #%00000001
  35.          sta $dc0d
  36. :modify2 lda #130       ; rasterzeile vorwaehlen
  37.          sta 53248+18
  38.          lda 53248+17   ; hi-byte des rasterstrahls
  39.          and #$7f       ; ausschalten
  40.          sta 53248+17
  41.          lda #%10000001 ; rasterzeileninterrupt vorwaehlen
  42.          sta 53248+26
  43.          lda #<irq      ; lo-byte der neuen routine
  44.          sta $0314      ; schreiben
  45.          lda #>irq      ; hi-byte der neuen routine
  46.          sta $0315      ; schreiben
  47.          cli            ; interrupt zulassen
  48.          rts            ; zurueck ins basic
  49. :irq     lda 53248+25   ; interruptflag loeschen
  50.          sta 53248+25   ; um errorszu vermeiden
  51.          lda 53248+18   ; rasterstrahl ueberfruefen
  52.          cmp #000       ; 000 erreicht ?
  53.          beq scroll     ; falls ja zur scrollroutine
  54.          ldx #00        ; x-register als indexzaehler
  55. :loop1   lda farb,x     ; farbcode laden
  56.          sta 53281      ; und ins hindergrundfarbreg. schreiben
  57.          lda zahl,x     ; den zaehler laden
  58.          tay            ; austausch von  a nach y
  59. :lp      dey            ; wartescheife
  60.          bne lp         ; je groesser der zaehler desto laenger die schleife
  61.          inx            ; x-register erhoehen
  62. :modify4 cpx #8         ; schon alle 8 zeilen ?
  63.          bne loop1      ; falls nicht zu loop1
  64. :modify5 lda #00        ; hintergrundfarbe poken
  65.          sta 53281
  66.          lda #000       ; rasterstahl vorwaehlen
  67.          sta 53248+18
  68.          jmp $ea31      ; sprung zur normalen interruptroutine
  69. :farb b 01,07,03,13,05,14,06,10,02,04,08,09,15,12,11,00,00,11,12,14,09,08,04,02
  70.       b 10,06,14,05,13,03,07,01       ; farbcodes
  71. :zahl b 02,08,08,08,09,08,09,08,10    ; zaehlcodes fuer die warteschleife
  72. :scroll  inc speed      ; speed erhoehen
  73.          lda speed      ; und ueberpruefen
  74. :modify3 cmp #03        ; endwert erreicht
  75.          beq next       ; falls ja eigentliches scrollen
  76.          jmp modify1    ; falls nicht normal weiter
  77. :next    lda farb       ; ersten farbcode laden
  78.          pha            ; auf stack schieben
  79.          ldy #01        ; y-register als index
  80. :op      lda farb,y     ; schleife
  81.          dey            ; in der alle
  82.          sta farb,y     ; farben um
  83.          iny            ; ein byte nach vorne
  84.          iny            ; gerueckt
  85.          cpy #32        ; werden
  86.          bne op
  87.          pla            ; ersten wert wieder hinten
  88.          sta farb+31    ; reinschieben
  89.          lda #00        ;geschwindigkeitszaehler auf null setzen
  90.          sta speed
  91. :modify1 lda #130       ; naechsten rasterinterrupt bestimmen
  92.          sta 53248+18   ; ins rasterregister schreiben
  93.          jmp $febc      ;sprung zum ende der interruptroutine
  94. :speed   b $00          ;geschwindigkeitszaehler fuer farbenscroll
  95.  
  96.  
  97.