Commit 1896d276 authored by Ben Avison's avatar Ben Avison
Browse files

Callbacks can now go off when the text window scrolls (newline or line wrap).

  In particular, they can go off when Scroll Lock etc have frozen the text
  output.
Detail:
  The callback chain is examined at least once per line scroll. Additionally,
  it is examined repeatedly while Scroll Lock or Ctrl-Shift are acting, while
  idling between lines if Ctrl is held down, and while waiting for the Shift
  key to be pressed at the bottom of a screen when in page mode.
  The opportunity is also taken to call Portable_Idle after each time that the
  callback chain has been examined.
Admin:
  Not tested.

Version 5.27. Tagged as 'Kernel-5_27'
parent 7b449b13
......@@ -6,9 +6,9 @@
GBLS Module_MinorVersion
GBLS Module_Date
GBLS Module_FullVersion
Module_MajorVersion SETS "5.26"
Module_Version SETA 526
Module_MajorVersion SETS "5.27"
Module_Version SETA 527
Module_MinorVersion SETS ""
Module_Date SETS "10 May 2000"
Module_FullVersion SETS "5.26"
Module_FullVersion SETS "5.27"
END
/* (5.26)
/* (5.27)
*
* This file is automatically maintained by srccommit, do not edit manually.
*
*/
#define Module_MajorVersion_CMHG 5.26
#define Module_MajorVersion_CMHG 5.27
#define Module_MinorVersion_CMHG
#define Module_Date_CMHG 10 May 2000
#define Module_MajorVersion "5.26"
#define Module_Version 526
#define Module_MajorVersion "5.27"
#define Module_Version 527
#define Module_MinorVersion ""
#define Module_Date "10 May 2000"
#define Module_FullVersion "5.26"
#define Module_FullVersion "5.27"
......@@ -2709,6 +2709,8 @@ DoOSBYTE87
PageTest
Push R14
BL Page_ProcessCallbacks ; give callbacks at least one chance per line
CLC ; don't set leds first time
BL CtrlShiftTest ; on exit, C=CTRL, N=SHIFT
BCC Page20 ; CTRL up, then branch
......@@ -2722,6 +2724,7 @@ CSWaitLoop
SEC ; set leds
BL CtrlShiftTest
BCC Page18
BLMI Page_ProcessCallbacks
BMI CSWaitLoop ; and wait for change (NB C=1 now)
Page18
BL PreWrchCursor ; get rid of cursor again
......@@ -2745,6 +2748,7 @@ Page30
BCC Page35 ; CTRL no longer down
LDROSB R1, CentiCounter
CMP R1, #1
BLCS Page_ProcessCallbacks
BCS Page30 ; loop with carry set
Page35
BL PreWrchCursor ; remove cursor again
......@@ -2783,6 +2787,7 @@ Page50 ; NB C=0 on entry from above
PageWaitLoop
SEC
BL CtrlShiftTest
BLPL Page_ProcessCallbacks
BPL PageWaitLoop
BL PreWrchCursor
......@@ -2832,6 +2837,21 @@ CtrlShiftTest ROUT
MOVS R0, R0, LSL #(32-6) ; C=CTRL, N=SHIFT
MOV PC, R14
Page_ProcessCallbacks
EntryS ; routine must preserve flags
; See if there are any pending callbacks
MOV R0, #0
LDRB R14, [R0, #CallBack_Flag]
TST R14, #CBack_VectorReq
BLNE process_callback_chain
; Now they're dealt with, we have nothing else to do, so call Idle
[ StorkPowerSave
LDR R14, [r0, #PortableFlags]
TST R14, #PortableFeature_Idle
SWINE XPortable_Idle
]
EXITS
; *****************************************************************************
;
; SO - Page mode on
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment