?login_element?
?pathlinks? – Rev 1959
Rev 1935 |
Rev 1977 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
on_int
if 0;atm
ld (on_int_hl),hl
ld (on_int_sp),sp
pop hl
ld (on_int_sp2),sp
ld (on_int_jp),hl
ex de,hl;ld hl,0
on_int_sp=$+1
ld (0),hl ;восстановили запоротый стек
ld sp,INTSTACK
push hl
else
;store DE in stack
ex de,hl
EX (SP),HL
LD (on_int_jp),HL
LD (IMSP),SP
LD SP,INTSTACK
push de
endif
push af
push bc
push ix
push iy
ex af,af' ;'
exx
push af
push bc
push de
push hl
if doublescr
if atm
on_int_0026=$+1
ld hl,0
ld (0x0026),hl ;восстановили запоротый стек 0x0028 (=40)
ld a,(curscrnum)
ld e,a
OS_SETSCREEN ;вызываем здесь, а не в рандомном месте, иначе даже с одной задачей можем получить непредсказуемую задержку, которую не фиксирует наш таймер? с несколькими задачами надо учитывать и системный - TODO
curpalette=$+1
ld de,wolfpal
OS_SETPAL
call oldimer ;ei
GET_KEY
or a
jr z,$+5
ld (curkey),a
else ;~atm
IF music
LD A,pgmuz
LD BC,#7FFD
OUT (C),A
CALL 0xc005;#8006 ;play mus
ENDIF
LD A,(newscr)
LD (curscr),A
curpg=$+1
LD A,#10
CALL SETPG
endif
endif
timer=$+1
LD HL,0
inc hl
LD (timer),HL
IF showfps
IMframe=$+1
LD A,1
DEC A
jr nz,IMNSEC
LD DE,#4100
;LD DE,#4100<1
;RR D
IMfps=$+1
LD A,0
LD C,10
CALL PRDIG
LD C,1
CALL PRDIG
XOR A
LD (IMfps),A
LD A,50
IMNSEC
LD (IMframe),A
ENDIF
if !atm
call _beeper_play
endif
pop hl
pop de
pop bc
pop af
exx
ex af,af' ;'
pop iy
pop ix
pop bc
pop af
if 0;atm
pop de
on_int_hl=$+1
ld hl,0
on_int_sp2=$+1
ld sp,0
else
pop de
IMSP=$+1
LD SP,0
POP HL
ex de,hl
endif
if !atm
ei
endif
on_int_jp=$+1
jp 0
IF showfps
PRDIG
LD L,15
INC L
SUB C
jr NC,$-2
ADD A,C
PUSH AF
LD A,L
ADD A,A
ADD A,A
ADD A,A
INC A
LD L,A
LD H,#3D
PUSH DE
LD B,6
LD A,(HL)
ld (DE),A
INC L,D
DJNZ $-4
POP DE
POP AF
INC E
RET
ENDIF
if atm
swapimer
di
ld hl,(0x0026) ;ok
ld (on_int_0026),hl
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
endif