home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1993 July / 64er_Magazin_93-07_1993_Markt__Technik_de_Side_A.d64 / dyspscroll.ascii < prev    next >
Text File  |  2022-10-26  |  9KB  |  354 lines

  1. ;---------------------------------------
  2. ;    ...sideborder dysp scroll...
  3. ;      ------------------------
  4. ;          by tilman linden
  5. ;(w) 1993                      for 64'er
  6. ;---------------------------------------
  7. ;*sprite charset at $2000
  8. ; ysinus at $35d0,256 values $33-$6e
  9. ; scrolltext at $36d0,codes $00-$3f
  10. ;---------------------------------------
  11.  .setpc $3030
  12. +tabd015  =$3300
  13. +ysin     =$35d0
  14. +edelay   =$32b0
  15. +tabd011  =$3260
  16. +xcount   =$325f
  17. +ycount   =$325e
  18. +scountlo =$325d
  19. +scounthi =$325c
  20. +mem      =2
  21. +text     =$36d0
  22. ;---------------------------------------
  23.           ldx #0
  24. +loop     txa
  25.           and #7
  26.           clc
  27.           adc #$1e
  28.           ora #$18       ;erstellen
  29.           and #$1f       ;der tabelle
  30.           sta tabd011,x  ;fuer $d011
  31.           lda #$d8       ;verzoegerung
  32.           sta edelay,x   ;vorbereiten
  33.           inx
  34.           cpx #80
  35.           bne loop
  36.           ldx #0
  37.           txa
  38.           sta tabd015,x
  39.           inx
  40.           bne *-4
  41.           lda #01
  42.           sta tabd015+128,x
  43.           inx
  44.           cpx #21
  45.           bne *-6
  46.           lda #255
  47.           sta $d01c
  48.           sta $d015
  49.           ldx #7
  50.           lda #15
  51.           sta $d027,x    ;farben setzen
  52.           lda #160
  53.           sta $07f8,x
  54.           dex
  55.           bpl *-11
  56.           lda #10
  57.           sta $d025
  58.           lda #2
  59.           sta $d026
  60.           lda #<text
  61.           sta scountlo
  62.           lda #>text
  63.           sta scounthi
  64.           sei            ;interrupt...
  65.           lda #<irq
  66.           sta $0314
  67.           lda #>irq
  68.           sta $0315
  69.           lda #127
  70.           sta $dc0d
  71.           lda #1
  72.           sta $d01a
  73.           lda #$2d       ;...ab raster-
  74.           sta $d012      ;zeile $2d
  75.           lda #$1b       ;starten
  76.           sta $d011
  77.           ldx #0
  78.           stx $d020
  79.           stx $d021
  80.           stx $3fff
  81.           cli
  82.           rts
  83. ;---------------------------------------
  84. +irq      lsr $fff0
  85.           nop
  86.           nop
  87.           nop
  88.           nop
  89.           nop
  90.           nop
  91.           nop
  92.           lda $d012      ;rasterflimmern
  93.           cmp #$2d
  94.           beq *+2
  95.           ldx #10
  96.           dex
  97.           bne *-1
  98.           bit 0          ;verhindern
  99.           lda $d012
  100.           cmp #$2e
  101.           beq *+2
  102.           ldx #10
  103.           dex
  104.           bne *-1
  105.           and 0,x
  106.           lda $d012
  107.           cmp #$2f
  108.           beq *+2
  109.           ldx #10
  110.           dex
  111.           bne *-1
  112.           bit 0
  113.           lda $d012
  114.           cmp #$30
  115.           beq *+2
  116.           asl $fff0      ;genaue...
  117.           ldx #12
  118.           dex
  119.           bne *-1
  120.           ldx #7
  121.           ldx #7         ;startposition
  122.           dex
  123.           bne *-1
  124.           asl $fff0      ;timen
  125. ;---------------------------------------
  126.           ldy #0
  127.           lda #$1d
  128.           sta $d011
  129.           bit $eaea
  130.           bit $eaea
  131.           bit $eaea
  132.           bit $2424
  133. +ger      nop            ;verzoegerung
  134.           nop            ;gerade
  135.           nop
  136.           nop
  137.           nop
  138.           nop
  139.           nop
  140.           nop
  141.           nop
  142.           nop
  143.           nop
  144.           nop
  145.           lda edelay,y   ;verzoegerung
  146.           sta timing+1   ;durch sprites
  147.           lda tabd011,y  ;ausgleichen,
  148.           dec $d016      ;rahmen aus,
  149.           sta $d011      ;keine 8.rz
  150.           lda #$c8
  151.           sta $d016
  152.           bit 0
  153. +end      iny
  154.           cpy #$50       ;80 zeilen
  155. +timing   bne *
  156.           jmp move
  157. ;---------------------------------------
  158. +unger    nop            ;verzoegerung
  159.           nop            ;ungerade
  160.           nop
  161.           nop
  162.           nop
  163.           nop
  164.           nop
  165.           nop
  166.           nop
  167.           nop
  168.           nop
  169.           nop
  170.           lda edelay,y
  171.           sta timing+1,x ;=> 1 tz mehr
  172.           lda tabd011,y
  173.           dec $d016      ;rahmen aus
  174.           sta $d011
  175.           lda #$c8
  176.           sta $d016
  177.           jmp end        ;naechste rz
  178. ;---------------------------------------
  179. +move     inc xcount     ;sinuszaehler
  180.           inc ycount     ;veraendern
  181.           lda xcount
  182.           cmp #13        ;neues zeichen?
  183.           bne sprites
  184.           lda #0         ;ja,dann xcount
  185.           sta xcount     ;auf 0,
  186.           lda ycount     ;ycount neu ...
  187.           clc
  188.           adc #248
  189.           sta ycount     ;setzen
  190.           ldx #0
  191.           lda $07f9,x
  192.           sta $07f8,x
  193.           inx
  194.           cpx #7
  195.           bne *-9
  196. +newchar  ldy scountlo   ;naechstes ...
  197.           lda #0
  198.           sta mem
  199.           lda scounthi   ;zeichen des...
  200.           sta mem+1
  201.           lda (mem),y    ;scrolltextes.
  202.           cmp #255       ;textende?
  203.           bne nextchar
  204.           lda #<text     ;ja, dann neu-
  205.           sta scountlo   ;start des
  206.           lda #>text     ;textes
  207.           sta scounthi
  208.           jmp newchar
  209. +nextchar clc
  210.           adc #128
  211.           sta $07ff
  212.           inc scountlo
  213.           bne *+5
  214.           inc scounthi
  215. +sprites  lda xcount     ;sinuszaehler
  216.           sta mem
  217.           lda ycount     ;sichern
  218.           sta mem+1
  219.           ldy #14
  220. +nextspr  ldx mem+1      ;y-positionen
  221.           lda ysin,x
  222.           sta $d001,y
  223.           ldx mem        ;x-positionen
  224.           lda xtab,x
  225.           sta $d000,y
  226.           lda $d010      ;msb der ...
  227.           asl
  228.           ora msbtab,x   ;x-positionen
  229.           sta $d010
  230.           lda mem
  231.           clc
  232.           adc #13
  233.           sta mem        ;x-abstand=13
  234.           lda mem+1
  235.           clc
  236.           adc #8
  237.           sta mem+1      ;y-abstand=8
  238.           dey
  239.           dey
  240.           bpl nextspr
  241. ;---------------------------------------
  242. ;>hier beginnt die routine zum ermitteln
  243. ; der verzoegerungen durch die sprites
  244. ;---------------------------------------
  245.           lda #<tabd015+$61
  246.           sta mem
  247.           lda #>tabd015
  248.           sta mem+1
  249.           ldx #0
  250. +nextrl   ldy $d00f
  251.           lda (mem),y
  252.           asl            ;berechnet
  253.           ldy $d00d
  254.           ora (mem),y    ;die anzahl
  255.           asl
  256.           ldy $d00b      ;der einge-
  257.           ora (mem),y
  258.           asl            ;schalteten
  259.           ldy $d009
  260.           ora (mem),y    ;sprites fuer
  261.           asl
  262.           ldy $d007      ;jede einzelne
  263.           ora (mem),y
  264.           asl            ;rasterzeile
  265.           ldy $d005
  266.           ora (mem),y    ;und ...
  267.           asl
  268.           ldy $d003
  269.           ora (mem),y
  270.           asl
  271.           ldy $d001
  272.           ora (mem),y
  273.           tay            ;...speichert
  274.           lda delay,y    ;die enstspr.
  275.           sta edelay,x   ;verzoegerung
  276.           dec mem        ;naechste rz
  277.           inx
  278.           cpx #$50
  279.           bne nextrl
  280. ;---------------------------------------
  281.           inc $d019
  282.           jmp $ea31
  283. ;---------------------------------------
  284.      .setpc $3400
  285. ;-----------------------------
  286. ;-tabelle fuer verzoegerungen-
  287. ;-----------------------------
  288. +delay
  289.  .byte ($d8,$da,$db,$db,$db,$dc,$dc,$dc)
  290.  .byte ($db,$07,$dd,$dd,$dc,$dd,$dd,$dd)
  291.  .byte ($db,$dc,$08,$08,$dd,$de,$de,$de)
  292.  .byte ($dc,$08,$de,$de,$dd,$de,$de,$de)
  293.  .byte ($db,$07,$dd,$dd,$dd,$09,$09,$09)
  294.  .byte ($dd,$09,$df,$df,$de,$df,$df,$df)
  295.  .byte ($dc,$dd,$09,$09,$de,$df,$df,$df)
  296.  .byte ($dd,$09,$df,$df,$de,$df,$df,$df)
  297.  .byte ($db,$07,$08,$08,$08,$de,$de,$de)
  298.  .byte ($08,$df,$0a,$0a,$de,$0a,$0a,$0a)
  299.  .byte ($dd,$de,$0a,$0a,$df,$e0,$e0,$e0)
  300.  .byte ($de,$0a,$e0,$e0,$df,$e0,$e0,$e0)
  301.  .byte ($dc,$08,$de,$de,$de,$0a,$0a,$0a)
  302.  .byte ($de,$0a,$e0,$e0,$df,$e0,$e0,$e0)
  303.  .byte ($dd,$de,$0a,$0a,$df,$e0,$e0,$e0)
  304.  .byte ($de,$0a,$e0,$e0,$df,$e0,$e0,$e0)
  305.  .byte ($db,$dc,$08,$08,$08,$09,$09,$09)
  306.  .byte ($08,$df,$df,$df,$09,$df,$df,$df)
  307.  .byte ($08,$09,$e0,$e0,$df,$0b,$0b,$0b)
  308.  .byte ($09,$e0,$0b,$0b,$df,$0b,$0b,$0b)
  309.  .byte ($dd,$09,$df,$df,$df,$0b,$0b,$0b)
  310.  .byte ($df,$0b,$e1,$e1,$e0,$e1,$e1,$e1)
  311.  .byte ($de,$df,$0b,$0b,$e0,$e1,$e1,$e1)
  312.  .byte ($df,$0b,$e1,$e1,$e0,$e1,$e1,$e1)
  313.  .byte ($dc,$08,$09,$09,$09,$df,$df,$df)
  314.  .byte ($09,$e0,$0b,$0b,$df,$0b,$0b,$0b)
  315.  .byte ($de,$df,$0b,$0b,$e0,$e1,$e1,$e1)
  316.  .byte ($df,$0b,$e1,$e1,$e0,$e1,$e1,$e1)
  317.  .byte ($dd,$09,$df,$df,$df,$0b,$0b,$0b)
  318.  .byte ($df,$0b,$e1,$e1,$e0,$e1,$e1,$e1)
  319.  .byte ($de,$df,$0b,$0b,$e0,$e1,$e1,$e1)
  320.  .byte ($df,$0b,$e1,$e1,$e0,$e1,$e1,$e1)
  321. ;----------------------------
  322. ;-tabelle fuer x-koordinaten-
  323. ;----------------------------
  324. +xtab
  325.  .byte ($7b,$77,$73,$6f,$6b,$67,$63,$5f)
  326.  .byte ($5b,$57,$53,$4f,$4b,$47,$43,$3f)
  327.  .byte ($3b,$37,$33,$2f,$2b,$27,$23,$1f)
  328.  .byte ($1b,$17,$13,$0f,$0b,$07,$03,$ff)
  329.  .byte ($fb,$f7,$f3,$ef,$eb,$e7,$e3,$df)
  330.  .byte ($db,$d7,$d3,$cf,$cb,$c7,$c3,$bf)
  331.  .byte ($bb,$b7,$b3,$af,$ab,$a7,$a3,$9f)
  332.  .byte ($9b,$97,$93,$8f,$8b,$87,$83,$7f)
  333.  .byte ($7b,$77,$73,$6f,$6b,$67,$63,$5f)
  334.  .byte ($5b,$57,$53,$4f,$4b,$47,$43,$3f)
  335.  .byte ($3b,$37,$33,$2f,$2b,$27,$23,$1f)
  336.  .byte ($1b,$17,$13,$0f,$0b,$07,$03,$f7)
  337.  .byte ($f3,$ef,$eb,$e7,$e3,$df,$d7,$d7)
  338. +msbtab
  339.  .byte ($01,$01,$01,$01,$01,$01,$01,$01)
  340.  .byte ($01,$01,$01,$01,$01,$01,$01,$01)
  341.  .byte ($01,$01,$01,$01,$01,$01,$01,$01)
  342.  .byte ($01,$01,$01,$01,$01,$01,$01,$00)
  343.  .byte ($00,$00,$00,$00,$00,$00,$00,$00)
  344.  .byte ($00,$00,$00,$00,$00,$00,$00,$00)
  345.  .byte ($00,$00,$00,$00,$00,$00,$00,$00)
  346.  .byte ($00,$00,$00,$00,$00,$00,$00,$00)
  347.  .byte ($00,$00,$00,$00,$00,$00,$00,$00)
  348.  .byte ($00,$00,$00,$00,$00,$00,$00,$00)
  349.  .byte ($00,$00,$00,$00,$00,$00,$00,$00)
  350.  .byte ($00,$00,$00,$00,$00,$00,$00,$01)
  351.  .byte ($01,$01,$01,$01,$01,$01,$01,$01)
  352.  
  353.  
  354.