]> git.sur5r.net Git - cc65/blob - libsrc/geos-cbm/process/processsleep.s
e44ecd2eb4de262d3355f5017b5e9e332625cbc4
[cc65] / libsrc / geos-cbm / process / processsleep.s
1
2 ;
3 ; Maciej 'YTM/Elysium' Witkowiak
4 ;
5 ; 30.10.99, 15.8.2003
6
7 ;
8 ; void Sleep (int jiffies);
9 ;
10
11             .export _Sleep
12
13             .include "jumptab.inc"
14             .include "geossym.inc"
15             .importzp ptr1
16             .importzp tmp1
17
18 _SleepExit:
19             jsr Sleep                   ; call Sleep
20             ldx tmp1
21             txs                         ; restore stack pointer
22             jmp (ptr1)                  ; when timeouts control will reach here
23
24 _Sleep:
25             sta r0L                     ; store data
26             stx r0H
27             pla
28             sta ptr1
29             pla
30             sta ptr1+1                  ; preserve return address
31             inc ptr1
32             bne @L0
33             inc ptr1+1                  ; fix return address
34 @L0:        tsx
35             stx tmp1                    ; preserve stack pointer
36             jsr _SleepExit              ; call Sleep
37             jmp MainLoop                ; immediate return here - go to idle loop