]> git.sur5r.net Git - cc65/blobdiff - libsrc/lynx/lynx-160-102-16.s
add posixdirent.s by Stefan Haubenthal
[cc65] / libsrc / lynx / lynx-160-102-16.s
index a27496cbcf516489a0137879983da5c22b9ef3bc..83e0c10afd8d8a8f1e99cc154554223e3b19c7a1 100644 (file)
@@ -196,6 +196,19 @@ UNINSTALL:
 ;
 
 INIT:
+; Enable interrupts for VBL
+       lda     #$80
+       tsb     VTIMCTLA
+; Set up collision buffer to $A058
+       lda     #$58
+       sta     COLLBASL
+       lda     #$A0
+       sta     COLLBASH
+; Put collision index before sprite data
+       lda     #$FE
+       sta     COLLOFFL
+       lda     #$FF
+       sta     COLLOFFH
 ; Done, reset the error code
         lda     #TGI_ERR_OK
         sta     ERROR
@@ -242,6 +255,8 @@ GETERROR:
 ;
 ; To update displays you can call tgi_ioctl(4, 1) it will wait for the
 ; next VBL interrupt and swap draw and view buffers.
+;
+; Activate or deactivate collision detection by calling tgi_ioctl(5, 0/1).
 
 CONTROL:
         pha                    ; Almost all control routines succeed
@@ -249,6 +264,20 @@ CONTROL:
        sta     ERROR
        pla
 
+       cmp     #5
+       bne     ControlSwap
+       lda     ptr1
+       bne     @L0
+       lda     __sprsys
+       ora     #$20
+       bra     @L1
+@L0:   lda     __sprsys
+       and     #$df
+@L1:   sta     __sprsys
+       sta     SPRSYS
+       rts
+
+ControlSwap:
        cmp     #4
        bne     ControlFramerate
 
@@ -384,12 +413,12 @@ CLEAR:  lda     #<cls_sprite
 SETVIEWPAGE:
        cmp     #1
                beq     @L1             ; page == maxpages-1
-               ldy     #<$de20         ; page 0
-               ldx     #>$de20
+               ldy     #<$e018         ; page 0
+               ldx     #>$e018
                bra     @L2
 @L1:
-       ldy     #<$be40         ; page 1
-               ldx     #>$be40
+       ldy     #<$c038         ; page 1
+               ldx     #>$c038
 @L2:
                sty     VIEWPAGEL       ; Save viewpage for getpixel
                stx     VIEWPAGEH
@@ -419,12 +448,12 @@ SETVIEWPAGE:
 SETDRAWPAGE:
                cmp     #1
                beq     @L1                 ; page == maxpages-1
-               lda     #<$de20             ; page 0
-               ldx     #>$de20
+               lda     #<$e018             ; page 0
+               ldx     #>$e018
                bra     @L2
 @L1:
-        lda     #<$be40             ; page 1
-               ldx     #>$be40
+        lda     #<$c038             ; page 1
+               ldx     #>$c038
 @L2:
         sta     DRAWPAGEL
                stx     DRAWPAGEH
@@ -434,19 +463,6 @@ SETDRAWPAGE:
 ; IRQ: VBL interrupt handler
 ;
 
-TIMER0_INTERRUPT = $01
-TIMER1_INTERRUPT = $02
-TIMER2_INTERRUPT = $04
-TIMER3_INTERRUPT = $08
-TIMER4_INTERRUPT = $10
-TIMER5_INTERRUPT = $20
-TIMER6_INTERRUPT = $40
-TIMER7_INTERRUPT = $80
-
-HBL_INTERRUPT = TIMER0_INTERRUPT
-VBL_INTERRUPT = TIMER2_INTERRUPT
-SERIAL_INTERRUPT = TIMER4_INTERRUPT
-
 IRQ:
                lda     INTSET          ; Poll all pending interrupts
                and     #VBL_INTERRUPT