From 2c9aad90fe48dcb946e07cef730eb39887fa2325 Mon Sep 17 00:00:00 2001 From: Robert Sprowson <rsprowson@gitlab.riscosopen.org> Date: Mon, 21 May 2012 19:31:45 +0000 Subject: [PATCH] Make Mike's macros permanent. While the HAL and kernel were being split some temporary macros were used for the bits being worked on, after 12 years of use they're probably safe to adopt. mjsCallHAL -> CallHAL; mjsAddressHAL -> AddressHAL; mjsHAL -> HAL. OS_VIDCDividerSWI code now always does NoSuchSWI (had been switched out previously). File vduhint.s no longer assembled (was empty). Version 5.35, 4.79.2.150. Tagged as 'Kernel-5_35-4_79_2_150' --- VersionASM | 10 +++++----- VersionNum | 14 ++++++------- hdr/KernelWS | 14 ------------- s/ARM600 | 10 ++-------- s/GetAll | 1 - s/HAL | 6 +----- s/Kernel | 51 ++++-------------------------------------------- s/VMSAv6 | 10 ++-------- s/vdu/vdu23 | 4 ++-- s/vdu/vdudriver | 37 +++++++++++------------------------ s/vdu/vdugrafv | 50 +++++++++++++++++++++++------------------------ s/vdu/vdupalxx | 46 +++++++++++++++++++++---------------------- s/vdu/vdupointer | 4 ++-- s/vdu/vduswis | 45 ++---------------------------------------- s/vdu/vduwrch | 4 ++-- 15 files changed, 87 insertions(+), 219 deletions(-) diff --git a/VersionASM b/VersionASM index a22a926..e15d12c 100644 --- a/VersionASM +++ b/VersionASM @@ -13,11 +13,11 @@ GBLS Module_ComponentPath Module_MajorVersion SETS "5.35" Module_Version SETA 535 -Module_MinorVersion SETS "4.79.2.149" -Module_Date SETS "18 May 2012" -Module_ApplicationDate SETS "18-May-12" +Module_MinorVersion SETS "4.79.2.150" +Module_Date SETS "21 May 2012" +Module_ApplicationDate SETS "21-May-12" Module_ComponentName SETS "Kernel" Module_ComponentPath SETS "castle/RiscOS/Sources/Kernel" -Module_FullVersion SETS "5.35 (4.79.2.149)" -Module_HelpVersion SETS "5.35 (18 May 2012) 4.79.2.149" +Module_FullVersion SETS "5.35 (4.79.2.150)" +Module_HelpVersion SETS "5.35 (21 May 2012) 4.79.2.150" END diff --git a/VersionNum b/VersionNum index 3144e0b..e4eb714 100644 --- a/VersionNum +++ b/VersionNum @@ -5,19 +5,19 @@ * */ #define Module_MajorVersion_CMHG 5.35 -#define Module_MinorVersion_CMHG 4.79.2.149 -#define Module_Date_CMHG 18 May 2012 +#define Module_MinorVersion_CMHG 4.79.2.150 +#define Module_Date_CMHG 21 May 2012 #define Module_MajorVersion "5.35" #define Module_Version 535 -#define Module_MinorVersion "4.79.2.149" -#define Module_Date "18 May 2012" +#define Module_MinorVersion "4.79.2.150" +#define Module_Date "21 May 2012" -#define Module_ApplicationDate "18-May-12" +#define Module_ApplicationDate "21-May-12" #define Module_ComponentName "Kernel" #define Module_ComponentPath "castle/RiscOS/Sources/Kernel" -#define Module_FullVersion "5.35 (4.79.2.149)" -#define Module_HelpVersion "5.35 (18 May 2012) 4.79.2.149" +#define Module_FullVersion "5.35 (4.79.2.150)" +#define Module_HelpVersion "5.35 (21 May 2012) 4.79.2.150" #define Module_LibraryVersionInfo "5:35" diff --git a/hdr/KernelWS b/hdr/KernelWS index 5e413f9..928478e 100644 --- a/hdr/KernelWS +++ b/hdr/KernelWS @@ -1185,16 +1185,12 @@ CLine_Softcopy # 1 ; Added for Morris - Monitor id VRAMWidth # 1 ; 0 => no VRAM, 1 => 32-bits wide, 2 => 64-bits wide - [ {FALSE} ;;; mjsHAL no LCD support LCD_Active # 1 ; Added to support LCD/CRT switching. bm 6 bits 0=>External CRT in use, 1=>Mono, 2=>Passive colour, 3=>Active colour ; bit 7 unset=>single panel, set=>dual panel LCD_Inverted # 1 ; Added to support LCD palette inversion. 0=normal, 1=inverted. Note that the inversion is invisible to apps. [ :DEF: ShowWS ! 0, "LCD_Active flag byte held at ":CC::STR:(LCD_Active) ] - | - # 2 ; SPARE - ] ] [ HAL @@ -1414,18 +1410,8 @@ ChocolateMSBlocks # 4 ; -> array of blocks for module SWI hash n ! 0, "ChocolateMSBlocks at ":CC::STR:(ChocolateMSBlocks) ] - [ :LNOT: HAL -mjs_tempHALworkspace # 4 ; required only temporarily for semi-HALised code still in RO kernel - [ :DEF: ShowWS - ! 0, "*** mjs_tempHALworkspace should be removed when kernel/HAL split permits" - ] -; !!!! Free Space (36 bytes) -OldSWIHashspace # 9*4 - | ; !!!! Free Space (40 bytes) OldSWIHashspace # 10*4 - ] - | ; !!!! Free Space (64 bytes) OldSWIHashspace # 16*4 diff --git a/s/ARM600 b/s/ARM600 index fd55935..fd77f98 100644 --- a/s/ARM600 +++ b/s/ARM600 @@ -180,12 +180,6 @@ SixteenMByte EQU (1024*1024 * 16) KEEP -; ***************************************************************************** - -; mjs Oct 2000 kernel/HAL split -; SetDAG stuff is no more, routines like SetVinit now call equivalent HAL -; routine - ; **************** CAM manipulation utility routines *********************************** ; ************************************************************************************** @@ -468,8 +462,8 @@ SSETMEMC ROUT MOV r1, #0 ; no funny business with DPMS MOV r0, #0 MOV r1 - mjsAddressHAL - mjsCallHAL HAL_Video_SetBlank + AddressHAL + CallHAL HAL_Video_SetBlank Pull "r0-r3, r9, r14" ] diff --git a/s/GetAll b/s/GetAll index 0c1f3b3..434e038 100644 --- a/s/GetAll +++ b/s/GetAll @@ -113,7 +113,6 @@ $GetMemInfo ! 0, "Main kernel size = &" :CC: :STR: (.-KernelBase) StartOfVduDriver - GET s.vdu.vduhint GET s.vdu.VduDriver GET s.vdu.VduSWIs GET s.vdu.VduPalette diff --git a/s/HAL b/s/HAL index df0eff7..c03545a 100644 --- a/s/HAL +++ b/s/HAL @@ -872,11 +872,7 @@ MMUon_nol1ptoverlap AddressHAL CallHAL HAL_Init - [ DebugHALTX - BL DebugHALPrint - = "HAL initialised",0 - ALIGN - ] + DebugTX "HAL initialised" LDR a1, =ZeroPage LDR v1, [a1, #InitUsedBlock] diff --git a/s/Kernel b/s/Kernel index 981f2c2..830dad5 100644 --- a/s/Kernel +++ b/s/Kernel @@ -16,28 +16,9 @@ SUBT Arthur Variables OPT 4 -; ----------------------------------------------------------------------------- -; -; mjs Oct 2000 kernel/HAL split -; -; macros that can be switched between doing real HAL calls and pseudo -; HAL calls with r9-> mjs pseudo HAL workspace -; -; these have been handy for interim HALising of kernel code in-situ -; (particularly used for video stuff), but can probably disappear later -; - - [ HAL - - MACRO - mjsAddressHAL $zero - AddressHAL $zero - MEND - - MACRO - mjsCallHAL $rout - CallHAL $rout - MEND +; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; handy macros: +; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ MACRO DebugTX $str @@ -47,24 +28,6 @@ ALIGN ] MEND - | - - MACRO - mjsAddressHAL - LDR r9, =mjs_tempHALworkspace - LDR r9, [r9] ; sb -> pseudo HAL workspace - MEND - - MACRO - mjsCallHAL $rout - BL $rout - MEND - - ] ;HAL - -; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -; handy macros: -; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ MACRO $l CheckSpaceOnStack $space, $faildest, $tmp @@ -804,14 +767,8 @@ JTABLE & SWIWriteC & NoSuchSWI ; SpecialControl & NoSuchSWI ; EnterUSR32SWI & NoSuchSWI ; EnterUSR26SWI + & NoSuchSWI ; VIDCDividerSWI ; End of unavailable SWIs. -; Should not cause any problems on any machine. STB flag just to be safe though. - [ STB :LAND: {FALSE} - & VIDCDividerSWI - | - ! 0, "mjsHAL - VIDCDividerSWI not implemented" - & NoSuchSWI - ] & NVMemorySWI & NoSuchSWI & NoSuchSWI diff --git a/s/VMSAv6 b/s/VMSAv6 index 7d65228..3ddf8b5 100644 --- a/s/VMSAv6 +++ b/s/VMSAv6 @@ -37,12 +37,6 @@ SixteenMByte EQU (1024*1024 * 16) KEEP -; ***************************************************************************** - -; mjs Oct 2000 kernel/HAL split -; SetDAG stuff is no more, routines like SetVinit now call equivalent HAL -; routine - ; **************** CAM manipulation utility routines *********************************** ; ************************************************************************************** @@ -319,8 +313,8 @@ SSETMEMC ROUT MOV r1, #0 ; no funny business with DPMS MOV r0, #0 MOV r1 - mjsAddressHAL - mjsCallHAL HAL_Video_SetBlank + AddressHAL + CallHAL HAL_Video_SetBlank Pull "r0-r3, r9, r14" ] diff --git a/s/vdu/vdu23 b/s/vdu/vdu23 index c2db024..b852eae 100644 --- a/s/vdu/vdu23 +++ b/s/vdu/vdu23 @@ -1521,8 +1521,8 @@ Vdu23_0_8 ROUT Pull "R14" | Push "R0-R3, R9, R12, LR" - mjsAddressHAL - mjsCallHAL HAL_Video_SetInterlace + AddressHAL + CallHAL HAL_Video_SetInterlace Pull "R0-R3, R9, R12, LR" ] diff --git a/s/vdu/vdudriver b/s/vdu/vdudriver index 7998d0a..23c2bde 100644 --- a/s/vdu/vdudriver +++ b/s/vdu/vdudriver @@ -177,24 +177,24 @@ VduInit ROUT STRB R0, [WsPtr, #ExternalFramestore] Push "r4, r9, r12" - mjsAddressHAL + AddressHAL MOV r4, r12 ; temp WsPtr - mjsCallHAL HAL_Video_Features + CallHAL HAL_Video_Features ; Set bit 31 of features if HAL_Video_Render supported CheckHAL HAL_Video_Render, r1 ORREQ r0, r0, #1:SHL:31 STR r0, [r4, #HALVideoFeatures] [ :LNOT:UseGraphicsV - mjsCallHAL HAL_Video_PixelFormats + CallHAL HAL_Video_PixelFormats STR r0, [r4, #HWPixelFormats] - mjsCallHAL HAL_Video_BufferAlignment + CallHAL HAL_Video_BufferAlignment STR r0, [r4, #HWBufferAlign] ] Pull "r4, r9, r12" ;;; sort this out! - ! 0, "mjsHAL not doing anything useful with HAL_Video_BufferAlignment" - ! 0, "mjsHAL not dealing with lack of h/w pointer" + ! 0, "HAL not doing anything useful with HAL_Video_BufferAlignment" + ! 0, "HAL not dealing with lack of h/w pointer" LDR R0, =RangeC+SpriteReason_SwitchOutputToSprite STR R0, [WsPtr, #SpriteMaskSelect] @@ -245,18 +245,6 @@ VduInit ROUT MOV R2, #7 ; copy 7 pages BL DoResetFont - [ :LNOT: HAL - ; - ; mjsHAL - temporary workspace while semi HALised code still in kernel - ; - MOV r3, #mjs_thalwk_size - BL ClaimSysHeapNode ; this had better succeed! - LDR r4, =mjs_tempHALworkspace - STR r2, [r4, #0] - BL mjs_tempHALworkspace_init - ; - ] - ;initialise the 6 pointer shape pointers and blocks ;(shape buffers are 6 * &100 starting at CursorData) ; @@ -906,7 +894,7 @@ TV_Mode_string [ {FALSE} ;;; LCDPowerCtrl :LAND: :LNOT: STB - ;;; mjsHAL no LCD support + ;;; HAL no LCD support ;Switch LCD off here if it is _not_ an LCD mode MOV R3, #0 LDRB R3, [R3, #LCD_Active] @@ -1090,8 +1078,8 @@ TV_Mode_string MOV R4, #GraphicsV_SetMode BL CallGraphicsV | - mjsAddressHAL - mjsCallHAL HAL_Video_SetMode + AddressHAL + CallHAL HAL_Video_SetMode Pull "R0-R3, R9, R12" ; restore registers after HAL call ] @@ -1127,7 +1115,7 @@ TV_Mode_string BL FF [ {FALSE} ;;; LCDPowerCtrl :LAND: :LNOT: STB - ;;; mjsHAL no LCD support + ;;; HAL no LCD support ;Switch the LCD on if LCD mode Push "r0" MOV R1, #0 @@ -1747,10 +1735,7 @@ svc_PortMan MOVNE PC, LR [ {TRUE} -;;;mjsHAL - may need sorting/HAL split -;;; for now, switched out coz kernel doesn't have VIDCControlSoftCopy any more! -;;; - ! 0, "mjsHAL - svc_PortMan currently broken by kernel/HAL split" + ! 0, "HAL - svc_PortMan broken by kernel/HAL split due to lack of VIDCControlSoftCopy" MOV PC, LR | ; When PortManager restarts, we need to put TV_Mode back. PortMan defaults to diff --git a/s/vdu/vdugrafv b/s/vdu/vdugrafv index 3c350ab..2a96b4f 100644 --- a/s/vdu/vdugrafv +++ b/s/vdu/vdugrafv @@ -84,75 +84,75 @@ GV_VSync ROUT GV_SetMode Push "r0-r3, r9, lr" - mjsAddressHAL WsPtr + AddressHAL WsPtr MOV r4, #0 - mjsCallHAL HAL_Video_SetMode + CallHAL HAL_Video_SetMode Pull "r0-r3, r9, pc" GV_SetInterlace Push "r0-r3, r9, lr" - mjsAddressHAL WsPtr + AddressHAL WsPtr MOV r4, #0 - mjsCallHAL HAL_Video_SetInterlace + CallHAL HAL_Video_SetInterlace Pull "r0-r3, r9, pc" GV_SetBlank Push "r0-r3, r9, lr" - mjsAddressHAL WsPtr + AddressHAL WsPtr MOV r4, #0 - mjsCallHAL HAL_Video_SetBlank + CallHAL HAL_Video_SetBlank Pull "r0-r3, r9, pc" GV_UpdatePointer Push "r0-r3, r9, lr" - mjsAddressHAL WsPtr + AddressHAL WsPtr MOV r4, #0 - mjsCallHAL HAL_Video_UpdatePointer + CallHAL HAL_Video_UpdatePointer Pull "r0-r3, r9, pc" GV_SetDMAAddress Push "r0-r3, r9, lr" - mjsAddressHAL WsPtr + AddressHAL WsPtr MOV r4, #0 - mjsCallHAL HAL_Video_SetDAG + CallHAL HAL_Video_SetDAG Pull "r0-r3, r9, pc" GV_VetMode Push "r1-r3, r9, lr" - mjsAddressHAL WsPtr + AddressHAL WsPtr MOV r4, #0 - mjsCallHAL HAL_Video_VetMode + CallHAL HAL_Video_VetMode Pull "r1-r3, r9, pc" GV_DisplayFeatures Push "r0,r1,r3, r9, lr" - mjsAddressHAL WsPtr + AddressHAL WsPtr MOV r4, #0 - mjsCallHAL HAL_Video_Features + CallHAL HAL_Video_Features STR r0, [sp, #0] - mjsCallHAL HAL_Video_PixelFormats + CallHAL HAL_Video_PixelFormats STR r0, [sp, #4] - mjsCallHAL HAL_Video_BufferAlignment + CallHAL HAL_Video_BufferAlignment MOV r2, r0 Pull "r0,r1,r3, r9, pc" GV_WritePaletteEntry Push "r0-r3, r9, lr" - mjsAddressHAL WsPtr + AddressHAL WsPtr MOV r4, #0 - mjsCallHAL HAL_Video_WritePaletteEntry + CallHAL HAL_Video_WritePaletteEntry Pull "r0-r3, r9, pc" GV_WritePaletteEntries Push "r0-r3, r9, lr" - mjsAddressHAL WsPtr + AddressHAL WsPtr MOV r4, #0 - mjsCallHAL HAL_Video_WritePaletteEntries + CallHAL HAL_Video_WritePaletteEntries Pull "r0-r3, r9, pc" GV_ReadPaletteEntry Push "r0,r2-r3, r9, lr" - mjsAddressHAL WsPtr + AddressHAL WsPtr CheckHAL HAL_Video_ReadPaletteEntry, r3 Pull "r0,r2-r3, r9, pc", EQ MOV r4, #0 @@ -172,17 +172,17 @@ GV_Render MOVEQ pc, lr Push "r0-r3, r9, lr" ORR r0, r0, #1:SHL:31 - mjsAddressHAL - mjsCallHAL HAL_Video_Render + AddressHAL + CallHAL HAL_Video_Render TEQ r0, #0 MOVPL r4, #0 Pull "r0-r3, r9, pc" GV_IICOp Push "r9, lr" - mjsAddressHAL WsPtr + AddressHAL WsPtr MOV r4, #0 - mjsCallHAL HAL_Video_IICOp + CallHAL HAL_Video_IICOp Pull "r9, pc" CallGraphicsV diff --git a/s/vdu/vdupalxx b/s/vdu/vdupalxx index 960a7fc..b86b772 100644 --- a/s/vdu/vdupalxx +++ b/s/vdu/vdupalxx @@ -85,7 +85,7 @@ MOSPaletteV ROUT B PV_BulkRead ; 7 B PV_BulkWrite ; 8 B PV_GammaCorrect ; 9 - [ LCDInvert + [ LCDInvert :LAND: :LNOT: HAL B PV_LCDInvert ; 10 | MOV pc, lr ; 10 @@ -641,8 +641,8 @@ UpdateSettingCommon ROUT BCC %FT10 ; only hit hardware if flash state = first -;;;mjsHAL -;;; old code had possible LCD greyscale munging, not supported in interim s.vduhint code +;;; mjs +;;; Pre HAL code had possible LCD greyscale munging, not supported in interim s.vduhint code ;;; [ UseGraphicsV Push "r0-r2,r4,lr" @@ -661,8 +661,8 @@ UpdateSettingCommon ROUT CMP r0, #256 ; HI if pointer MOVLS r0, r0, LSR #8 ; type 0=normal, 1=border MOVHI r0, #2 ; type 2=pointer - mjsAddressHAL - mjsCallHAL HAL_Video_WritePaletteEntry + AddressHAL + CallHAL HAL_Video_WritePaletteEntry Pull "r0-r3, r12, lr" ] @@ -692,8 +692,8 @@ UpdateSettingCommon ROUT BCS %FT20 ; only hit hardware if flash state = second -;;;mjsHAL -;;; old code had possible LCD greyscale munging, not supported in interim s.vduhint code +;;; mjs +;;; Pre HAL code had possible LCD greyscale munging, not supported in interim s.vduhint code ;;; [ UseGraphicsV Push "r0-r2,r4,lr" @@ -712,8 +712,8 @@ UpdateSettingCommon ROUT CMP r0, #256 ; HI if pointer MOVLS r0, r0, LSR #8 ; type 0=normal, 1=border MOVHI r0, #2 ; type 2=pointer - mjsAddressHAL - mjsCallHAL HAL_Video_WritePaletteEntry + AddressHAL + CallHAL HAL_Video_WritePaletteEntry Pull "r0-r3, r12, lr" ] @@ -905,8 +905,8 @@ DoR0Flash BL CallGraphicsV | PHPSEI r10 ; disable IRQs round this bit - mjsAddressHAL - mjsCallHAL HAL_Video_WritePaletteEntries + AddressHAL + CallHAL HAL_Video_WritePaletteEntries PLP r10 MOV r4, #0 ] @@ -936,7 +936,7 @@ UpdateAllPalette ROUT Entry "r0-r3, r10-r11" | Entry "r0-r3, r9, r10-r12" - mjsAddressHAL + AddressHAL ] ;sort out which palette to use LDROSB r0, FlashState @@ -975,18 +975,18 @@ UpdateAllPalette ROUT MOV r0, #0 ; type 0 (normal) MOV r2, #0 ; start at entry 0 MOV r3, #256 ; 256 entries - mjsCallHAL HAL_Video_WritePaletteEntries + CallHAL HAL_Video_WritePaletteEntries ;next, border colour LDR r1, [r10] ; border colour MOV r0, #1 ; type 1 MOV r2, #0 ; index 0 - mjsCallHAL HAL_Video_WritePaletteEntry + CallHAL HAL_Video_WritePaletteEntry ;finally, pointer colours ADD r1, r10, #4 ; pointer to pointer colours (oh yes) MOV r0, #2 ; type 2 MOV r2, #1 ; start at index 1 MOV r3, #3 ; 3 entries - mjsCallHAL HAL_Video_WritePaletteEntries + CallHAL HAL_Video_WritePaletteEntries ] ; PLP r11 @@ -1022,8 +1022,8 @@ PV_BlankScreen ROUT BL CallGraphicsV | Push "r0, r12" - mjsAddressHAL - mjsCallHAL HAL_Video_SetBlank + AddressHAL + CallHAL HAL_Video_SetBlank Pull "r0, r12" ] @@ -1213,7 +1213,7 @@ PV_SetSupremacyXfer ROUT Pull "r0-r3, pc" - [ LCDInvert + [ LCDInvert :LAND: :LNOT: HAL ; ***************************************************************************** ; ; PV_LCDInvert - Invert the LCD palette @@ -1223,8 +1223,6 @@ PV_SetSupremacyXfer ROUT ; out: r4 = 0 PV_LCDInvert ROUT - ;;;mjsHAL not supported - ;;; MOV r4, #0 Pull "pc" ] @@ -1237,8 +1235,8 @@ PV_VIDCDisable ROUT Push "r0-r3, r9, r12" MOV r0, #1 - mjsAddressHAL - mjsCallHAL HAL_Video_SetPowerSave + AddressHAL + CallHAL HAL_Video_SetPowerSave MOV r4, #0 Pull "r0-r3, r9, r12, pc" @@ -1249,8 +1247,8 @@ PV_VIDCRestore ROUT Push "r0-r3, r9, r12" MOV r0, #0 - mjsAddressHAL - mjsCallHAL HAL_Video_SetPowerSave + AddressHAL + CallHAL HAL_Video_SetPowerSave MOV r4, #0 Pull "r0-r3, r9, r12, pc" diff --git a/s/vdu/vdupointer b/s/vdu/vdupointer index 2be8497..5a177cc 100644 --- a/s/vdu/vdupointer +++ b/s/vdu/vdupointer @@ -398,8 +398,8 @@ UpdatePointer ROUT Pull "PC" | Push "R9, R12, LR" - mjsAddressHAL - mjsCallHAL HAL_Video_UpdatePointer + AddressHAL + CallHAL HAL_Video_UpdatePointer Pull "R9, R12, PC" ] diff --git a/s/vdu/vduswis b/s/vdu/vduswis index ce7493d..20e707c 100644 --- a/s/vdu/vduswis +++ b/s/vdu/vduswis @@ -814,8 +814,8 @@ FindOKMode ROUT MOVNE r0, #0 Pull "r4" | - mjsAddressHAL - mjsCallHAL HAL_Video_VetMode + AddressHAL + CallHAL HAL_Video_VetMode ] 04 CMP r0,#0 @@ -2115,45 +2115,4 @@ ScreenMode_ForceCleanCache ; Screen caching isn't supported yet. Just do nothing. MOV pc,lr -;;;mjsHAL - VIDCDividerSWI is horrible VIDC specific API, compiled out -;;; -; Should not cause any problems on any machine. STB flag just to be safe though. - [ STB :LAND: {FALSE} -; ***************************************************************************** -; -; VIDCDividerSWI - Entry point for SWI OS_VIDCDivider -; -; in: r0 = Value for divider - 1 -; -; out: r0 = Preserved or error if V set -; - -VIDCDividerSWI Entry "r0-r1,WsPtr" - CMP r0, #8 ; Check the value is in range. - BCC %FT10 ; Continue if so. - PullEnv ; Else return an error. - ADR r0, ErrorBlock_BadVIDCDivider ; Get address of error. - [ International - BL TranslateError ; Translate the error. - ] - ORR lr, lr, #V_bit ; Return with V bit set. - ExitSWIHandler - -10 - VDWS WsPtr ; Get the VDU work space. - LDR r1, [WsPtr, #VIDCControlSoftCopy] ; Get the old control register value. - BIC r1, r1, #7:SHL:CR_PixelDivShift ; Mask out the old divider. - ORR r1, r1, r0, LSL #CR_PixelDivShift ; ORR in the new... - STR r1, [WsPtr, #VIDCControlSoftCopy] ; Write back to work space. - MOV r0, #VIDC - STR r1, [r0, #0] ; Write to VIDC also. - PullEnv ; Done. - ExitSWIHandler - -ErrorBlock_BadVIDCDivider - & 0 - = "BadVIDCDiv:Bad VIDC divider value.", 0 - - ] - END diff --git a/s/vdu/vduwrch b/s/vdu/vduwrch index 5cbb318..4999648 100644 --- a/s/vdu/vduwrch +++ b/s/vdu/vduwrch @@ -2243,8 +2243,8 @@ Do_HALDAG Pull "r4, pc" | Push "r3, r9, r12, lr" ; we can corrupt r0-r2 - mjsAddressHAL - mjsCallHAL HAL_Video_SetDAG + AddressHAL + CallHAL HAL_Video_SetDAG Pull "r3, r9, r12, pc" ] -- GitLab