.globl map_save
.globl map_restore
.globl platform_interrupt_all
- .globl _kernel_flag
+ .globl _need_resched
.globl _irqwork
; exported debugging tools
; COMMON MEMORY BANK (0xF000 upwards)
; -----------------------------------------------------------------------------
.area _COMMONMEM
-_kernel_flag:
- .db 1 ; We start in kernel mode
-
+_need_resched:
+ .db 0
trapmsg: .ascii "Trapdoor: SP="
.db 0
trapmsg2: .ascii ", PC="
push iy
ld (U_DATA__U_SP), sp ; this is where the SP is restored in _switchin
- ; set inint to false
- xor a
- ld (_inint), a
-
; find another process to run (may select this one again)
call _getproc
pop hl ; return code
; enable interrupts, if the ISR isn't already running
- ld a, (_inint)
+ ld a, (U_DATA__U_ININTERRUPT)
or a
- ret z ; in ISR, leave interrupts off
+ ret nz ; in ISR, leave interrupts off
ei
ret ; return with interrupts on