diff --git a/VersionASM b/VersionASM index 2d157a5e1a66c61b0579f9ea1f3cc073e312583c..6f09e4c61386024e401f173b1ca8a6ea3d9bde8d 100644 --- a/VersionASM +++ b/VersionASM @@ -5,8 +5,8 @@ GBLA Module_Version GBLS Module_MinorVersion GBLS Module_Date -Module_MajorVersion SETS "4.67" -Module_Version SETA 467 +Module_MajorVersion SETS "4.68" +Module_Version SETA 468 Module_MinorVersion SETS "" -Module_Date SETS "30 Oct 1998" +Module_Date SETS "16 Dec 1998" END diff --git a/VersionNum b/VersionNum index 47025b403d1fe4950632dc84dc558416b9475a15..9e4a8657ae4ccbc4fa9e24e4e510fa0466dcfcc6 100644 --- a/VersionNum +++ b/VersionNum @@ -1,14 +1,14 @@ -/* (4.67) +/* (4.68) * * This file is automatically maintained by srccommit, do not edit manually. * */ -#define Module_MajorVersion_CMHG 4.67 +#define Module_MajorVersion_CMHG 4.68 #define Module_MinorVersion_CMHG -#define Module_Date_CMHG 30 Oct 1998 +#define Module_Date_CMHG 16 Dec 1998 -#define Module_MajorVersion "4.67" -#define Module_Version 467 +#define Module_MajorVersion "4.68" +#define Module_Version 468 #define Module_MinorVersion "" -#define Module_Date "30 Oct 1998" +#define Module_Date "16 Dec 1998" diff --git a/s/PMF/osbyte b/s/PMF/osbyte index 187a33c3871ebe96197f3a2d3160048691e713b3..8ebdd8911c1f2ea6f853604176001cc0b68abc64 100644 --- a/s/PMF/osbyte +++ b/s/PMF/osbyte @@ -1356,42 +1356,39 @@ DoOsbyteVar AND R11, R3, R2 ; Mangle it as required by the law EOR R11, R11, R1 ; ................................ MOV R1, R3 ; Return old value in R1 - [ {FALSE} TEQ R0, #OsbyteKeyStatus - MainVars ; sorry - it's not pure any more. BEQ DoOsbyteKeyStatus ; mea culpa. KJB. - ] STRB R11, [R0, WsPtr]! ; R0 +:= WsPtr LDRB R2, [R0, #1] ; Return contents of next loc in R2 MyOsbyte - [ {FALSE} ; Keyboard status (OS_Byte 202). ; on entry: R0 = OsbyteKeyStatus - MainVars ; R1 = old value ; R11 = new value DoOsbyteKeyStatus ROUT - Push "R0-R3" + Push "R0-R3,R10" + MOV R10,#UpCallV ; (Can't use OS_UpCall - it enables IRQs and we're documented as not doing so) MOV R3,R11 ; R3 = new value MOV R2,R1 ; R2 = old value MOV R1,#0 ; pre-change MOV R0,#UpCall_KeyboardStatus - SWI XOS_UpCall ; go on then, interfere - BVS %FT10 + BL CallVector ; go on then, interfere (Corrupts R10 & WsPtr) LDR R0, [R13] ; get back original R0 - STRB R3, [R0, WsPtr]! ; R0 +:= WsPtr + STRB R3, [R0, #OsbyteVars]! ; R0 +:= WsPtr LDRB R14, [R0, #1] ; Return contents of next loc in R2 STR R14, [R13, #8] ; by popping it on the stack TEQ R2, R3 ; don't bother with UpCall if it didn't change... + MOVNE R10,#UpCallV MOVNE R1,#1 ; post-change MOVNE R0,#UpCall_KeyboardStatus - SWINE XOS_UpCall ; can't do anything about it now... -10 - Pull "R0-R3" + BLNE CallVector ; can't do anything about it now... + + Pull "R0-R3,R10" MyOsbyte - ] LTORG