.globl map_kernel
.globl map_process
.globl map_process_always
- .globl _kernel_flag
+ .globl _need_resched
.globl map_save
.globl map_restore
.globl platform_interrupt_all
; -----------------------------------------------------------------------------
.area _COMMONMEM
-trapmsg: .ascii "Trapdoor: SP="
- .db 0
-trapmsg2: .ascii ", PC="
- .db 0
-tm_user_sp: .dw 0
-
-tm_stack:
- .db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-tm_stack_top:
-
;
; Ask the controller to reboot
;
.db 0
.db 0
-_kernel_flag:
- .db 1
+_need_resched:
+ .db 0
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