From 9c444a49471e8f60112e0417183476d2349e4d59 Mon Sep 17 00:00:00 2001 From: izydorst Date: Fri, 15 Aug 2003 22:20:45 +0000 Subject: [PATCH] fixed Sleep behavior (now truly works) git-svn-id: svn://svn.cc65.org/cc65/trunk@2335 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/geos/process/processsleep.s | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) 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