diff --git a/libsrc/geos/process/processsleep.s b/libsrc/geos/process/processsleep.s index 7edac2ff4..1cd41441b 100644 --- a/libsrc/geos/process/processsleep.s +++ b/libsrc/geos/process/processsleep.s @@ -1,8 +1,8 @@ ; -; Maciej 'YTM/Alliance' Witkowiak +; Maciej 'YTM/Elysium' Witkowiak ; -; 30.10.99 +; 30.10.99, 15.8.2003 ; ; void Sleep (int jiffies); @@ -12,9 +12,26 @@ .include "../inc/jumptab.inc" .include "../inc/geossym.inc" + .importzp ptr1 + .importzp tmp1 + +_SleepExit: + jsr Sleep ; call Sleep + ldx tmp1 + txs ; restore stack pointer + jmp (ptr1) ; when timeouts control will reach here _Sleep: - - sta r0L + sta r0L ; store data stx r0H - jmp Sleep \ No newline at end of file + pla + sta ptr1 + pla + sta ptr1+1 ; preserve return address + inc ptr1 + bne @L0 + inc ptr1+1 ; fix return address +@L0: tsx + stx tmp1 ; preserve stack pointer + jsr _SleepExit ; call Sleep + jmp MainLoop ; immediate return here - go to idle loop