Login

Subversion Repositories NedoOS

Rev

Rev 1029 | 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
         di ;╨╕╨╜╨░╤З╨╡ ╨┐╤А╨╡╤А╤Л╨▓╨░╨╜╨╕╨╡ ╨▓╨╛ ╨▓╤А╨╡╨╝╤П ╨╛╤Б╤В╨░╤В╨║╨░ ╨╛╨▒╤А╨░╨▒╨╛╤В╤З╨╕╨║╨░ ╨╝╨╛╨╢╨╡╤В ╨╖╨░╤Ж╨╕╨║╨╗╨╕╤В╤М ╨╛╨▒╤А╨░╨▒╨╛╤В╤З╨╕╨║

        OS_GETKEYMATRIX ;out: bcdehlix = halfrows cs...space
        ld (halfrow0),bc
        ld (halfrow2),de
        ld (halfrow4),hl
        ld (halfrow6),ix
        ld a,e
        and 0b10101
        jp z,quit

        GET_KEY
       ld (curmouse),de
       ld a,l
       ld (curmousebuttons),a
        ;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

        ;╤Б╤З╤С╤В╤З╨╕╨║ ╨║╨░╨┤╤А╨╛╨▓

        ld hl,_time
        ld b,4
.time1
        inc (hl)
        jr nz,.time2
        inc hl
        djnz .time1
.time2
       
        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

curmouse
        dw 0
curmousebuttons
        db 0

halfrow0
        dw 0
halfrow2
        dw 0
halfrow4
        dw 0
halfrow6
        dw 0