Login

Subversion Repositories NedoOS

Rev

Rev 942 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

swapimer
        di
        ld de,0x0038
        ld hl,oldimer
        ld bc,3
swapimer0
        ld a,(de)
        ldi ;[oldimer] -> [0x0038]
        dec hl
        ld (hl),a ;[0x0038] -> [oldimer]
        inc hl
        jp pe,swapimer0
        ei
        ret
oldimer
        jp on_int ;╨╖╨░╨╝╨╡╨╜╨╕╤В╤Б╤П ╨╜╨░ ╨║╨╛╨┤ ╨╕╨╖ 0x0038
        jp 0x0038+3

on_int
;restore stack with de
        EX DE,HL
        EX (SP),HL ;de="hl", ╨▓ ╤Б╤В╨╡╨║╨╡ "de"
        LD (on_int_jp),HL
        ;EX DE,HL
        ;POP DE
        LD (on_int_sp),SP
        LD SP,INTSTACK        
        push af
        push bc
        push de ;"hl"
        exx
        ex af,af' ;'
        push af
        push bc
        push de
        push hl
        push ix
        push iy

        ld hl,_palChange
        xor a
        cp (hl)
        ld (hl),a
        jp z,int_nochangepal
        ld de,(_palBright)
        ld a,d
        add a,high palBrightTable
        ld b,a
        ld lx,e
        ld hl,_palette
        ld de,CURPAL
        dup 16
        ld a,(hl)
        add a,lx
        ld c,a
        ld a,(bc)
        ld (de),a
        inc de
        ld (de),a
        inc de
        inc l
        edup
        ld a,(_borderCol)
        ld e,a
        OS_SETBORDER
        ld de,CURPAL
        OS_SETPAL
int_nochangepal
        call oldimer

        GET_KEY
        ld a,c ;╨║╨╜╨╛╨┐╨║╨░ ╨▒╨╡╨╖ ╤Г╤З╤С╤В╨░ ╤П╨╖╤Л╨║╨░
        or a
        jr z,$+5
        ld (curkey),a
        ;CALL .. ;╨▓╨░╤И ╨╛╨▒╤А╨░╨▒╨╛╤В╤З╨╕╨║ ╨┐╤А╨╡╤А╤Л╨▓╨░╨╜╨╕╨╣
       
        ld a,(curpg16k) ;ok
        push af
        ld a,(curpg32klow) ;ok
        push af
        ld a,(curpg32khigh) ;ok
        push af

        ld a,SND_PAGE
        call setpg4000

        ld a,(musicPage)
        or a
        jr z,.noMusic
        call setpg8000
        ld bc,#fffd
        ifdef TFM
        ld a,%11111000          ;╨▓╤В╨╛╤А╨╛╨╣ ╤З╨╕╨┐ Turbo FM
        else
        ld a,#fe                ;╨▓╤В╨╛╤А╨╛╨╣ ╤З╨╕╨┐ Turbo Sound
        endif
                ;╨╡╤Б╨╗╨╕ Turbo Sound ╨╜╨╡╤В, ╨╖╨▓╤Г╨║╨╕ ╨╕ ╨╝╤Г╨╖╤Л╨║╨░
        out (c),a               ;╨╕╨│╤А╨░╤О╤В ╨╜╨░ ╨╛╨┤╨╜╨╛╨╝ ╤З╨╕╨┐╨╡, ╨╕╨╜╨░╤З╨╡ ╨╜╨░ ╤А╨░╨╖╨╜╤Л╤Е

        ifdef TFM
        ld a,(TURBOFMON)
        or a
        call nz,PT3_FRAME
        else
        call PT3_FRAME
        endif

        ifdef TFM
        ;jr .sfx ;wrong TS detection on TFM?
        else
        ld a,(turboSound)
        or a
        jr z,.sfx
        endif

.noMusic
        ifdef TFM
        ;ld a,(TURBOFMON)
        ;or a
        ;call nz,PT3_MUTE ;reset_ay
        ld a,1
        call reset_ay_ay
        else
        ld a,1
        call reset_ay
        endif
.sfx

        ifdef TFM
        ld bc,#fffd
        ld a,%11111001          ;1-╨╣ ╤З╨╕╨┐ Turbo FM
        ;ld a,%11111011         ;1-╨╣ ╤З╨╕╨┐ Turbo FM, no wait sync
        out (c),a
        else
        ld bc,#fffd             ;╨┐╨╡╤А╨▓╤Л╨╣ ╤З╨╕╨┐
        out (c),b
        endif

        call AFX_FRAME
       
        pop af
        SETPG32KHIGH
        pop af
        SETPG32KLOW
        pop af
        SETPG16K
       
        pop iy
        pop ix
        pop hl
        pop de
        pop bc
        pop af
        ex af,af' ;'
        exx
        pop hl
        pop bc
        pop af
on_int_sp=$+1
        ld sp,0
        pop de
        EI
on_int_jp=$+1
        jp 0