- 13 Jun, 2017 1 commit
-
-
Jeffrey Lee authored
Detail: s/vdu/vduswis - Don't use RMVForCurrentMode when R0 = ModeNo, only use it if R0 is -1. This ensures that results for explicitly-specified modes will always represent the base properties of the mode and won't be influenced by any unusual properties of the current mode, e.g. LineLength/ScreenSize alterations caused by driver-specific framebuffer padding. Admin: Tested on Raspberry Pi 3 Version 5.83. Tagged as 'Kernel-5_83'
-
- 07 Jun, 2017 1 commit
-
-
Jeffrey Lee authored
Detail: The ExtraBytes control list item can be used to add padding between framebuffer rows. When the kernel sees a VIDC list containing this item, it will now adjust the LineLength and ScreenSize mode variables accordingly, with the end result that the correct amount of memory will be allocated for the framebuffer and the OS will render into it correctly. Files changed: - hdr/KernelWS - Add DisplayLineLength variable to allow the correct LineLength value to be preserved when screen output is redirected to a sprite - s/vdu/vdudriver - Make ModeChangeSub initialise DisplayLineLength before calling SwitchOutputToSprite. Update PushModeInfo to take ExtraBytes into account when calculating LineLength and ScreenSize. - s/vdu/vdugrafl - Adjust SwitchOutputToSprite to use DisplayLineLength when restoring screen output - s/vdu/vduwrch - Fix full-screen CLS to not write to the padding bytes Admin: Tested on Raspberry Pi 3 Version 5.82. Tagged as 'Kernel-5_82'
-
- 17 Dec, 2016 1 commit
-
-
Jeffrey Lee authored
Detail: s/vdu/vdugrafl, s/vdu/vduttx - Adjust initialisation & shutdown of TTX workspace to fix workspace being erroneously freed/reinitialised when redirecting output to a sprite s/vdu/vdugrafk - If ScreenLoad needs to load one row at a time (e.g. when graphics window width != sprite width), allocate a block from the RMA instead of assuming that ScrLoaBuffer is large enough hdr/KernelWS - Get rid of ScrLoaBuffer, and shrink LargeCommon to a suitable size. Frees about 2K of VDU workspace. s/GetAll - Move Hdr:Sprite earlier in list of GETs Admin: Tested on Raspberry Pi Version 5.75. Tagged as 'Kernel-5_75'
-
- 15 Dec, 2016 2 commits
-
-
Jeffrey Lee authored
Detail: s/vdu/vdudriver, s/vdu/vdumodes - Re-introduce TTX256 so that 8bpp teletext will be used if no MDF is loaded s/vdu/vdudriver - If the video driver didn't support the native mode 7 colour depth, ModePromoTable was swapping it for another mode number, preventing the AltTTX code in FindOKMode from operating. So, skip the ModePromoTable check for mode 7. s/vdu/vduswis - Minor correction to alternate teletext mode search; 1<<5 = 32bpp, so stop search at log2bpp of 6 Admin: Tested on Raspberry Pi Version 5.74. Retagged as 'Kernel-5_74'
-
Jeffrey Lee authored
Detail: This set of changes: * Adds support for the T, TX and TY mode string elements (as per RISCOS Ltd) * Adds support for entering arbitrary-resolution teletext modes by using mode selector blocks with the Teletext mode flag set * ScrRCol and ScrBRow mode variables can be provided in the mode selector in order to restrict the number of text rows/columns in teletext modes (as per RISCOS Ltd) * If the rows / columns are restricted in this manner then the text window will be centered on the screen, to try and avoid things looking too ugly (no variable text scaling implemented) * For HiResTTX, all colour depths >= 4bpp are now supported by teletext. This essentially makes the TTX256 switch obsolete. * If the "native" mode 7 is unavailable then the kernel will try a series of fallback resolutions & colour depths in an effort to find a combination that works Known bugs/issues: * Teletext column count has a max limit of 255 due to TTXDoubleCounts being a byte array * If there's a border around the text window, the border will not be refreshed when changing transparency modes using a VDU 23,18,0 sequence * ScreenLoad looks like it can overflow the LargeCommon buffer (no buffer size check) - needs fixing before LargeCommon can be safely shrunk below (Old)TTXMapSize File changes: - hdr/KernelWS - Make CharWidth non-conditional. Adjust handling of teletext workspace; it's now allocated from the system heap to allow it to cope with arbitrary screen sizes - s/vdu/vdu23 - Make CharWidth non-conditional - s/vdu/vducursoft - Make CursorTeletext cope with arbitrary colour depths, make CharWidth non-conditional, remove hard-coded teletext values - s/vdu/vdudriver - Deal with teletext workspace allocation during ModeChangeSub. Deal with selecting teletext modes (and validating colour depth) in GenerateModeSelectorVars. - s/vdu/vdugrafl - Make CharWidth non-conditional. Calculate offset required for text window centering. - s/vdu/vdumodes - Remove TTX256 - s/vdu/vduswis - Try other teletext modes if native mode 7 not available. Extend OS_ScreenMode reason codes to cope with teletext mode strings. - s/vdu/vduttx - Update to use dynamic workspace. Replace various hardcoded values with variable lookups. Update character plotting + colour/palette selection to work with true-colour modes if HiResTTX. - s/vdu/vduwrch - Move some useful code into a subroutine. Update FastCLS to cope with true-colour teletext. Update AddressR0R1 to cope with text window centering offset. Make CharWidth non-conditional. Admin: Tested on Raspberry Pi, BB-xM VDU 23,18,0 in 256-colour teletext now works correctly (previously 64-colour mode was in use, causing palette update to be ruined by VIDC1-mangling) Version 5.74. Tagged as 'Kernel-5_74'
-
- 30 Jun, 2016 3 commits
-
-
Jeffrey Lee authored
Detail: This change gets rid of the following switches from the source (picking appropriate code paths for a 32bit HAL build): * FixCallBacks * UseProcessTransfer * CanLiveOnROMCard * BleedinDaveBell * NewStyleEcfs * DoVdu23_0_12 * LCDPowerCtrl * HostVdu * Print * EmulatorSupport * TubeInfo * AddTubeBashers * TubeChar, TubeString, TubeDumpNoStack, TubeNewlNoStack macros * FIQDebug * VCOstartfix * AssemblingArthur (n.b. still defined for safety with anything in Hdr: which uses it, but not used explicitly by the kernel) * MouseBufferFix * LCDInvert * LCDSupport * DoInitialiseMode * Interruptible32bitModes * MouseBufferManager * StrongARM (new CacheCleanerHack and InterruptDelay switches added to hdr/Options to cover some functionality that StrongARM previously covered) * SAcleanflushbroken * StrongARM_POST * IrqsInClaimRelease * CheckProtectionLink * GSWorkspaceInKernelBuffers * EarlierReentrancyInDAShrink * LongCommandLines * ECC * NoSPSRcorruption * RMTidyDoesNowt * RogerEXEY * StorkPowerSave * DebugForcedReset * AssembleKEYV * AssemblePointerV * ProcessorVectors * Keyboard_Type Assorted old files have also been deleted. Admin: Identical binary to previous revision for IOMD & Raspberry Pi builds Version 5.51. Tagged as 'Kernel-5_51'
-
Jeffrey Lee authored
Detail: This change gets rid of the following switches from the source (picking appropriate code paths for a desktop build): * STB * RO371Timings * NormalSpeedROMS * AutoSpeedROMS * RISCPCBurstMode * InterlacedPointer * ParallelFlashUpgrade (and s/FlashROM file) * Embedded_UI Some of the deleted code might be worth revisiting in future: * OS_ReadSysInfo 4 support for storing the MAC in alternate CMOS locations (including 2nd copy for error checking) or fetching via Service_MachineAddress * Mouse handling changes, possibly aimed at hiding the mouse pointer if a mouse isn't connected * More strict CMOS validation in s/NewReset Admin: Identical binary to previous revision for IOMD & Raspberry Pi builds Version 5.50. Tagged as 'Kernel-5_50'
-
Jeffrey Lee authored
Detail: This change gets rid of the following switches from the source (picking appropriate code paths for a 32bit HAL build): * HAL * HAL26 * HAL32 * No26bitCode * No32bitCode * IncludeTestSrc * FixR9CorruptionInExtensionSWI Various old files have also been removed (POST code, Arc/STB keyboard drivers, etc.) Admin: Identical binary to previous revision for IOMD & Raspberry Pi builds Version 5.49. Tagged as 'Kernel-5_49'
-
- 01 Jun, 2016 1 commit
-
-
Jeffrey Lee authored
Detail: s/vdu/vduttx - References to VduDriverWorkSpace need to be ZeroPage-relative. Without relocation, it looks like most of these addresses were hitting the Debugger workspace page, avoiding an immediate crash but causing no text to appear on screen. Admin: Tested on Raspberry Pi 1 Version 5.35, 4.79.2.326. Tagged as 'Kernel-5_35-4_79_2_326'
-
- 22 May, 2016 1 commit
-
-
Jeffrey Lee authored
Detail: s/vdu/vdugrafh - Rewrite MergeSpriteAreas so that memory movement is now O(N) instead of O(N^2). Checking for duplicate sprites is still slow (O(N^2) search), but this resolves the main performance bottleneck with the code. s/vdu/vdugrafg - Add a variant of SpriteCtrlBlk which skips the call to GetName; this helps MergeSpriteAreas for the common case of a dest area with lots of sprites and a source area with a handful of sprites (SpriteCtrlBlk is now called on the source area once per dest sprite, previously was called on the dest area once per source sprite). Admin: Tested on Raspberry Pi 1, merging Sovereign theme Sprites11 file with itself (2.2MB file, 358 sprites) Old code took 860cs, new code takes 18cs (15cs of which appears to be loading the second copy of the file, judging by *SLoad timings) Version 5.35, 4.79.2.321. Tagged as 'Kernel-5_35-4_79_2_321'
-
- 08 May, 2016 1 commit
-
-
Jeffrey Lee authored
Detail: s/HeapSort, s/vdu/vdugrafc, s/vdu/vduswis - Avoid unnecessary remainder calculations in DivRem macro s/PMF/i2cutils, s/PMF/osword - Make use of DivRem's ability to accept a constant as the divisor Admin: Tested on Cortex-A15 Version 5.35, 4.79.2.318. Tagged as 'Kernel-5_35-4_79_2_318'
-
- 06 Jan, 2016 1 commit
-
-
Jeffrey Lee authored
Detail: s/vdu/vduswis - Fix conversion of mode specifier to mode string so that the X eigen value is only reported in the mode string if it was included in the mode specifier; previously was erroneously basing the decision on whether the Y eigen was specified, resulting in e.g. "EX4294967295" if only the Y eigen was included - Fix a stack imbalance causing the conversion of mode string to mode specifier crashing (typically with branch through zero) if an invalid eigen value is specified in the string (e.g. EX-1 as above) Admin: Tested on Raspberry Pi Version 5.35, 4.79.2.302. Tagged as 'Kernel-5_35-4_79_2_302'
-
- 12 Oct, 2015 1 commit
-
-
Jeffrey Lee authored
Detail: s/vdu/vdugrafj - Rewrite WritePaletteFromSprite to fix some issues with the logic which decides whether to change screen mode: - ModeNo was always being treated as if it was a mode selector block, causing bad pointer dereferences if it was actually a numbered mode. Prior to zero page protection the code would have eventually stumbled its way through to the mode change code. - For checking the pixel format, only the Log2BPP was being compared, resulting in code deciding that (e.g.) modes with differing RGB order were the same - However the eigen value checking was also broken (checking wrong part of generated mode selector block), causing the mode change logic to always be taken s/vdu/vdugrafdec - Increase size of SloadModeSel so it's actually large enough to hold the generated mode selector - old code would have run off the end a bit (thankfully, it was the last thing in that particular workspace block) Admin: Tested on BB-xM, *ScreenLoad'ing sprites from various modes Fixes issue reported on forums: https://www.riscosopen.org/forum/forums/4/topics/3649 Version 5.35, 4.79.2.294. Tagged as 'Kernel-5_35-4_79_2_294'
-
- 31 Aug, 2015 1 commit
-
-
Jeffrey Lee authored
Detail: This set of changes adds support for "physical memory pools" (aka PMPs), a new type of dynamic area which allow physical pages to be claimed/allocated without mapping them in to the logical address space. PMPs have full control over which physical pages they use (similar to DAs which request specific physical pages), and also have full control over the logical mapping of their pages (which pages go where, and per-page access/cacheability control). Currently the OS makes use of two PMPs: one for the free pool (which now has a logical size of zero - freeing up gigabytes of logical space), and one for the RAM disc (logical size of 1MB, allowing for a physical size limited only by the amount of free memory) Implementing these changes has required a number of other changes to be made: * The CAM has been expanded from 8 bytes per entry to 16 bytes per entry, in order to allow each RAM page to store information about its PMP association * The system heap has been expanded to 32MB in size (from just under 4MB), in order to allow it to be used to store PMP page lists (1 word needed per page, but PMP pages may not always have physical pages assigned to them - so to allow multiple large PMPs to exist we need more than just 1 word per RAM page) * The &FA000000-&FBFFFFFF area of fixed kernel workspace has been shuffled around to accomodate the larger CAM, and the system heap is now located just above the RMA. * SoftResets code stripped out (unlikely we'll ever want to fix and re-enable it) * A couple of FastCDA options are now permanently on * Internal page flags shuffled around a bit. PageFlags_Unavailable now publicly exposed so that PMP clients can lock/unlock pages at will. * When OS_ChangeDynamicArea is asked to grow or shrink the free pool, it now implicitly converts it into a shrink or grow of application space (which is what would happen anyway). This simplifies the implementation; during a grow, pages (or replacement pages) are always sourced from the free pool, and during a shrink pages are always sent to the free pool. File changes: - hdr/KernelWS - Extend DANode structure. Describe CAM format. Adjust kernel workspace. - hdr/OSRSI6, s/Middle - Add new item to expose the CAM format - hdr/Options - Remove SoftResets switch. Add some PMP switches. - s/ARM600, s/VMSAv6 - Updated for new CAM format. Note that although the CAM stores PMP information, BangCamUpdate currently doesn't deal with updating that data - it's the caller's responsibility to do so where appropriate. - s/ChangeDyn - Lots of changes to implement PMP support, and to cope with the new CAM format. - s/HAL - Updated to cope with new CAM format, and lack of logical mapping of free pool. - s/MemInfo - Updated to cope with new CAM format. OS_Memory 0 updated to cope with converting PPN to PA for pages which are mapped out. OS_Memory 24 updated to decode the access permissions on a per-page basis for PMPs, and fixed its HWM usage for sparse DAs. - s/NewReset - Soft reset code and unused AddCamEntries function removed. Updated to cope with new CAM format, PMP free pool, PMP RAMFS - s/AMBControl/allocate - Update comment (RMA hasn't been used for AMBControl nodes for a long time) - s/AMBControl/growp, s/AMBControl/memmap, s/AMBControl/shrinkp - Update for new CAM format + PMP free pool - s/vdu/vdudriver - Strip out soft reset code. Admin: Tested on Pandaboard This is just a first iteration of the PMP feature, with any luck future changes will improve functionality. This means APIs are subject to change as well. Version 5.35, 4.79.2.284. Tagged as 'Kernel-5_35-4_79_2_284'
-
- 14 Aug, 2015 1 commit
-
-
Jeffrey Lee authored
Detail: - Docs/HAL/ARMop_API - Updated with documentation for the new ARMops. - s/ARMops - Set up pointers for the new memory barrier ARMops. Add full implementations for ARMv6 & ARMv7; older architectures should be able to get by with a mix of null ops & write buffer drain ops. Update ARMopPtrTable to validate structure against the list in hdr/OSMisc - hdr/KernelWS - Reserve workspace for new ARMops. Free up a bit of space by limiting ourselves to 2 cache levels with ARMv7. Remove some unused definitions. - hdr/OSMisc - New header defining OS_PlatformFeatures & OS_MMUControl reason codes, OS_PlatformFeatures 0 flags, and OS_MMUControl 2 ARMop indices - Makefile - Add export rules for OSMisc header - hdr/ARMops, s/ARM600, s/VMSAv6 - Remove CPUFlag_* and MMUCReason_* definitions. Update OS_MMUControl write buffer drain to use DSB_ReadWrite ARMop (which is what most existing write buffer drain implementations have been renamed...
-
- 13 Jul, 2015 1 commit
-
-
Jeffrey Lee authored
Detail: s/vdu/vdupointer - For any mode where the software pointer is usable, RestorePointer was restoring the software pointer regardless of whether it was in use at the time RemovePointer was called. This would cause both the software & hardware pointers to be briefly enabled at the same time, potentially causing flickering or other glitches. Fix the issue by making sure RestorePointer only restores if the software pointer was actually in use at the time RemovePointer was called. Also, attempt to deal with the situation where the pointer might have moved to a location where the software pointer is no longer required. s/Middle - Improve integration of HangWatch with the abort handler - avoid overwriting the top of the SVC stack so that it can be preserved for the HangWatch dump. Admin: Tested on Raspberry Pi Version 5.35, 4.79.2.270. Tagged as 'Kernel-5_35-4_79_2_270'
-
- 10 Jul, 2015 1 commit
-
-
Jeffrey Lee authored
Detail: This set of changes adds support for rendering software mouse pointers directly in the kernel, rather than requiring graphics drivers to render them themselves as was the case previously. If a driver returns from GraphicsV_Features with the 'hardware pointer' bit clear, and a call to GraphicsV_UpdatePointer is returned unclaimed, then the kernel will step in and render a software pointer. This allows selective control over which areas of the screen the software pointer is used (e.g. if hardware only supports its use in some areas) hdr/KernelWS - Shrink PointerXEigFactor to 1 byte to free up some space for tracking the display log2bpp. Use 8 words of space for tracking software pointer state. s/vdu/vducursoft - Adjust existing the existing calls to the software pointer RemovePointer/RestorePointer functions so that they're called with IRQs enabled s/vdu/vdudriver - Keep track of display log2bpp. Claim/release memory needed for restoring pixels under software pointer. s/vdu/vdugrafhal - Update HAL_VideoUpdatePointer handling so that 0 can be returned in a1 to indicate the GraphicsV call should be left unclaimed. s/vdu/vdupalxx - Trigger updates of the cached software pointer palette whenever it's likely to become invalidated. s/vdu/vdupointer - Add software pointer implementation. Relying on a SpriteExtend OS_SpriteOp would be nice, but we're in the background so have to do plotting & unplotting manually. ColourTrans is used to cache the pointer palette colours for the current mode, although we're limited to calling it from a callback. Admin: Tested on Raspberry Pi & BB-xM Pointer is very flickery under some circumstances (e.g. running !CloseUp) due to needing to plot/unplot around any VDU driver screen access (as per text cursor). So code may need revising in future once we can trap reads/writes from specific screen memory pages. Version 5.35, 4.79.2.269. Tagged as 'Kernel-5_35-4_79_2_269'
-
- 21 Dec, 2014 1 commit
-
-
Robert Sprowson authored
-
- 18 Sep, 2014 1 commit
-
-
Jeffrey Lee authored
Detail: s/vdu/vdudecl - Add a couple more optimisations to LoadCoordPair - use SXTH where possible, and use LDRSH if data is halfword aligned (not currently the case, but may be in future) s/vdu/vdugrafj - Fix PreCreateHeader to allow <=256 colour RISC OS 5 sprites to have palettes Admin: Tested on Pandaboard Version 5.35, 4.79.2.238. Tagged as 'Kernel-5_35-4_79_2_238'
-
- 16 Sep, 2014 1 commit
-
-
Jeffrey Lee authored
Detail: s/vdu/vdugrafk - When saving a new format sprite that would otherwise contain lefthand wastage, copy each screen row to a temporary buffer before saving it out in order to allow the wastage to be removed Admin: Tested on Pandaboard Fixes issue reported on forums: https://www.riscosopen.org/forum/forums/4/topics/2802 Version 5.35, 4.79.2.237. Tagged as 'Kernel-5_35-4_79_2_237'
-
- 18 Apr, 2014 1 commit
-
-
Jeffrey Lee authored
Detail: s/PMF/osinit, s/vdu/vdudriver - Move GraphicsV_StartupMode call from InitialiseMode to TranslateMonitorLeadType. This means (a) it'll only be used if the CMOS mode is set to 'auto' and (b) the returned mode can more easily be read by other modules via OS_ReadSysInfo 1. s/vdu/vduswis - Make OS_CheckModeValid act as if we have practically unlimited screen memory if using a GraphcisV driver with variable external framestore. In this case it's the driver should have already OK'd the memory requirements from within the VetMode call issued by FindOKMode - although the check won't be fully valid if we're checking for a shadow mode as the driver currently isn't told how many screen banks are required. Admin: Tested on Raspberry Pi OS_CheckModeValid fix ensures valid modes which require large amounts of VRAM are reported correctly when we're currently in a low-memory mode Version 5.35, 4.79.2.220. Tagged as 'Kernel-5_35-4_79_2_220'
-
- 16 Apr, 2014 1 commit
-
-
Jeffrey Lee authored
Detail: s/vdu/vdumodes - Redefine VgaX_7 to be VLM_7 if HiResTTX/TTX256 in use Admin: Tested on Raspberry Pi Fixes nasty crash when selecting mode 7 without an MDF loaded due to VIDC list being mismatched with code/VWSTAB Version 5.35, 4.79.2.219. Tagged as 'Kernel-5_35-4_79_2_219'
-
- 06 Apr, 2014 1 commit
-
-
Jeffrey Lee authored
Detail: hdr/VduExt - Define new Service_DisplayChanged reason code for us to issue before anything actually happens. Define new Service_DisplayStatus reason codes for drivers to issue when they change their configuration/capabilities in some way. s/Utility - Listen out for Service_DisplayStatus s/vdu/vdudriver - When DisplayStatus_Changing/DisplayStatus_Changed is received for the current driver, translate into the appropriate DisplayChanged reason codes so that software which only cares about the current driver doesn't have two sets of service calls to listen out for s/vdu/vduswis - When switching driver in OS_ScreenMode 11, issue the new Service_DisplayChanged PreChanging reason code before we update the current GraphicsV driver VDU variable Admin: Tested in Iyonix ROM softload Version 5.35, 4.79.2.216. Tagged as 'Kernel-5_35-4_79_2_216'
-
- 04 Apr, 2014 1 commit
-
-
John Ballance authored
HAL graphics driver calls. Added further debug capability Detail: Added additional HAL call. minor code correction in hal graphicsv dispatcher Added DebugReg macro to aid debugging Admin: (highlight level of testing that has taken place) (bugfix number if appropriate) Version 5.35, 4.79.2.215. Tagged as 'Kernel-5_35-4_79_2_215'
-
- 28 Mar, 2014 1 commit
-
-
Jeffrey Lee authored
Fix OS_SpriteOp 41 (read pixel) for 4K colour sprites. Update ECF patterns to work sensibly in true colour modes. Detail: s/vdu/vdugrafg - Change SetupSprModeData to calculate SprReadNColour from log2bpp instead of the NColour mode variable - fixes the alpha component being lost when using OS_SpriteOp 41 to read from 4K colour sprites with alpha channels s/vdu/vdudriver - Change SetCol30 to generate more sensible ECF colour blocks when in true colour modes. Previously it would treat each byte of the 8 byte ECF pattern as a separate row, and replicate the byte 4 times to produce one colour word per row. However this isn't so great for true colour modes, especially if you have an alpha channel which needs specific values. So to fix the issue, take inspiration from how Paint assumed the ECF patterns worked, and treat 16bpp modes as being a 1x4 pattern and 32bpp modes as being a 1x2 pattern Admin: Tested on BB-xM OS_SpriteOp 41 fix fixes Paint colour picker always returning 0 alpha when picking from 4K ARGB sprites ECF change fixes Paint's masked sprite background ECF pattern to display properly in true colour modes Version 5.35, 4.79.2.213. Tagged as 'Kernel-5_35-4_79_2_213'
-
- 09 Mar, 2014 1 commit
-
-
Jeffrey Lee authored
ModeFlag_GreyscalePalette handling improvements. Issue service calls on certain GraphicsV events. Sprite tweaks and fixes. Detail: hdr/VduExt - Add reason codes used by Service_DisplayChanged & Service_DisplayStatus s/vdu/vdugrafg - Remove dependency on SpriteReason_BadReasonCode; just use the size of our lookup table instead. Alter SpriteOp lookup table so that unimplemented ops return an error instead of doing nothing. Fix PutSprite incorrectly using the slow GCOL action plotter if a request was made to plot a sprite using its mask but the sprite has none. s/vdu/vdugrafl - Update screen redirection handling to set ModeFlag_GreyscalePalette if switching output to a sprite with a greyscale palette or a RISC OS Select alpha mask. Restore the flag to its correct value when restoring screen output. s/vdu/vdupalxx - Update ModeFlag_GreyscalePalette in realtime as the palette is changed s/vdu/vduswis - Issue Service_DisplayChanged during OS_ScreenMode 11. Issue Service_DisplayStatus during OS_ScreenMode 65 & 66. Admin: Tested on Iyonix, BB-xM Version 5.35, 4.79.2.210. Tagged as 'Kernel-5_35-4_79_2_210'
-
- 01 Jan, 2014 1 commit
-
-
Jeffrey Lee authored
Fix dodgy mode changes on Raspberry Pi. Fix crash when switching to a driver which uses DA 2 if DA 2 isn't already large enough. Detail: s/vdu/vdudriver: - Fix bug in ModeChangeSub which caused the VariableFramestore flag to be ignored, resulting in unreliable mode changes on the Raspberry Pi. - Changed InitialiseMode to reset a few more variables when preparing to use a driver which uses DA 2. Without this the screen DA handler will likely crash when attempting to resize the DA for the initial mode change. Admin: Tested on Raspberry Pi Version 5.35, 4.79.2.207. Tagged as 'Kernel-5_35-4_79_2_207'
-
- 19 Dec, 2013 1 commit
-
-
Jeffrey Lee authored
Detail: s/MemInfo - Fix OS_Memory 0 physical-to-logical conversion returning bad addresses for most cases due to R5 being modified by physical_to_ppn (bug introduced in revision 4.4.2.20) s/vdu/vdudriver - Fix some VDU driver variables not being initialised correctly when switching GraphicsV driver s/vdu/vdugrafv - Fix handling of VSync events from GraphicsV drivers other than driver zero s/vdu/vduswis - Fix abort when OS_ScreenMode 11 is passed a bad driver number Admin: Tested on Raspberry Pi There still seems to be a bug lurking somewhere when switching to a GraphicsV driver that uses DA2; the system will crash horribly unless DA2 is already a suitable size for the initial mode change Version 5.35, 4.79.2.206. Tagged as 'Kernel-5_35-4_79_2_206'
-
- 17 Dec, 2013 1 commit
-
-
Jeffrey Lee authored
Detail: hdr/Options, s/ArthurSWIs, s/ChangeDyn, s/PMF/KbdDrA1, s/PMF/key, s/vdu/vdugrafa, s/vdu/vdugrafd, s/vdu/vdugrafhal, s/vdu/vdugrafv, s/vdu/vdumodes, s/vdu/vduwrch: - Strip out DoingVdu build switch (did nothing) - Strip out Japanese16BitSound switch (did nothing) - Strip out MakeModeSelectorsForModeNUmbers switch (altered the mode list structures, but there wasn't any code to do anything with the new data) - Strip out remaining uses of UseGraphicsV switch (now hardwired to {TRUE}) - Strip out ShadowROM switch (altered FixedAreasTable to show the shadow mapping, but code to create the mapping is missing) - Strip out PollMouse switch (old Archimedes-era debug/development option) Admin: Tested on BB-xM Builds to same binary as previous version Version 5.35, 4.79.2.204. Tagged as 'Kernel-5_35-4_79_2_204'
-
- 15 Dec, 2013 1 commit
-
-
Jeffrey Lee authored
Detail: This set of changes: * Adds basic support for multiple GraphicsV drivers, by way of some new OS_ScreenMode reason codes for registering/deregistering, selecting and enumerating drivers (11, 64-68) * Tidies up handling of HAL video calls so that the HAL calls will be transformed into a bona fide GraphicsV driver if they're implemented * Changes handling of 16bpp gamma table entries so that they're sent to GraphicsV in a generic form instead of in a VIDC-specific form * Adds a new GraphicsV call and defines new VIDC list items to allow GraphicsV drivers to utilise the new pixel formats File changes: * h/VIDCList, hdr/VIDCList, Makefile - Add new header export containing VIDC list type 3 definitions, to avoid repeated definitions in other components * Resources/UK/Messages - Add new GraphicsV/OS_ScreenMode error strings and some missing processor type strings * hdr/KernelWS - Clean up some pre-GraphicsV definitions, and add new workspace locations for storing the current GraphicsV driver number and the driver list * hdr/Options - Remove obsolete InverseTextTransparency option * hdr/VduExt - Add VDU variable 192 for storing GraphicsV driver number (same as ROL's VideoV driver number). Remove old 'Flag_*' mode flag definitions (use new 'ModeFlag_*' defintions instead). Add new OS_ScreenMode reason codes. * s/ARM600, s/VMSAv6, s/vdu/vdu23, s/vdu/vdugrafa, s/vdu/vdugrafd, s/vdu/vdupalxx, s/vdu/vdupointer, s/vdu/vduwrch - Strip out pre-GraphicsV code. Update GraphicsV code to use correct driver number. * s/ArthurSWIs - Pass the default GraphicsV claimant the VduDriverWorkSpace instead of ZeroPage * s/Getall - Add Hdr:VIDCList and s/vdu/VduGrafHAL to list of GETs * s/NewIRQs - Remove HAL VSync IRQ initialisation, is now handled by grafvhal. Remove old HAL VsyncIRQ entry point, all VSyncs are now handled by VsyncIRQ_ExtEntry. * s/PMF/osbyte - Stop OS_Byte 19 waiting forever if no video driver is active * s/PMF/osinit - Remove HAL VSync IRQ initialisation, is now handled by grafvhal * s/vdu/vducursoft - Use new workspace variable names and flag names * s/vdu/vdudecl - Remove old HALDAG_* definitions, GVDAG_* definitions are used instead. Add definition of the per-driver workspace structure and flags. * s/vdu/vdudriver - Remove pre-GraphicsV code. Update InitialiseMode to check for and initialise a HAL driver. Use cached driver features word in a few places instead of calling GraphicsV each time. Update PalIndexTable to disable VIDC mangling of 16bpp gamma tables. * s/vdu/vdugrafv, s/vdu/vdugrafhal - HAL<->GraphicsV code split off into its own file (vdugrafhal). Default GraphicsV claimant now only deals with VSync events for the active driver. * s/vdu/vdumodes - Get rid of old VIDC List type 3 definiton; now in hdr/VIDCList * s/vdu/vduswis - Added OS_ScreenMode reason codes 11 and 64-68 for registering, deregistering, selecting and enumerating GraphicsV drivers. Update mode set code to not bother checking if the driver supports the pixel format; instead we assume that the driver's vet mode call will do the check for us. Admin: Tested in Tungsten, IOMD, OMAP3 & BCM2835 ROMs Requires HdrSrc-2_38 and updated video driver modes Version 5.35, 4.79.2.203. Tagged as 'Kernel-5_35-4_79_2_203'
-
- 13 Oct, 2013 1 commit
-
-
Jeffrey Lee authored
Detail: s/vdu/vdugrafh - Fixed SpriteMaskAddr to use the right Log2BPC value when generating addressed for alpha masks. Fix ReadPixelMask to return 255 when sprite has now mask, but mode word has wide mask bit set. Admin: Tested on BB-xM Reading/writing alpha mask pixels now works properly across the whole image Version 5.35, 4.79.2.198. Tagged as 'Kernel-5_35-4_79_2_198'
-
- 06 Oct, 2013 1 commit
-
-
Jeffrey Lee authored
Fix plotting of RISC OS 5 type sprites and masks. Fix hang when attempting to report "alpha mask not supported" error. Fix reading/writing of alpha mask pixels. Detail: s/vdu/vdugrafg - Fixed PutSprite and PlotMask to correctly deal with RISC OS 5 type sprite mode words. Fix infinite loops in PutSpriWideMaskErr casued by R14 getting trashed. s/vdu/vdugrafh - Fixed SpriteMaskAddr malfunctioning when trying to calculate addresses in alpha masks. Minor ReadPixelMask & WritePixelMask optimisations. s/vdu/vduswis - Fixed OS_ScreenMode 13 & 14 to count "G2" as a valid colour specifier. Admin: Tested on BB-xM Should hopefully fix the random hangs reported on the forums when trying to use sprites with alpha masks Version 5.35, 4.79.2.197. Tagged as 'Kernel-5_35-4_79_2_197'
-
- 07 Aug, 2013 1 commit
-
-
Jeffrey Lee authored
Detail: s/vdu/vduswis - Add an extra LTORG that's within range of LDR r14,=&1FFF instruction Admin: Tested in Iyonix softload Fixes build errors for Tungsten ROM, should fix IOMD + BCM2835 too. Version 5.35, 4.79.2.195. Tagged as 'Kernel-5_35-4_79_2_195'
-
- 06 Aug, 2013 1 commit
-
-
Jeffrey Lee authored
Add support for the new RISC OS 5 style sprite mode word. Add partial support for alpha channel sprite masks. Implement OS_ScreenMode reasons 13-15 Detail: ECFShift/ECFYOffset: - hdr/PublicWS - Add ECFShift and ECFYOffset to list of public exports (SpriteExtend was using hardcoded values). Rearrange exports so that VduWorkspace exports are now labelled as such. - hdr/KernelWS - Make sure ECFShift & ECFYOffset match their exported locations - hdr/OSRSI6, s/Middle - Add OS_ReadSysInfo 6 items 83 & 84, for reading ECFYOffset and ECFShift locations Mode flags/VDU variables: - Makefile - Add hdr/VduExt to the C header exports - hdr/VduExt - Get rid of NotRVVTBarWobblyBits macro and defined VDU variables manually so that Hdr2H will handle them. Begin replacing overly generic 'Flag_*' mode flag definitions with 'ModeFlag_*' instead. Define new flags as required by the new screen/sprite modes. Add OS_ScreenMode reason codes and mode selector format (from s.vdu.vdudecl) - NewModes/NEWF2, NewModes/OldPSSrc, NewModes/PSSrc, s.vdu.vdu23, s.vdu.vducursoft, s.vdu.vdudriver, s.vdu.vdugrafg, s.vdu.vdugrafj, s.vdu.vdugrafl, s.vdu.vdumodes, s.vdu.vdupal10, s.vdu.vdupal20, s.vdu.vdupalette, s.vdu.vdupalxx, s.vdu.vduwrch - Renaming Flag_* to ModeFlag_* - s.vdu.vdudecl - Remove OS_ScreenMode reason codes & mode selector format definitions; these are now in hdr/VduExt. Flag_* -> ModeFlag_* renaming. - s.vdu.vdupalxx - Apply a greyscale palette in PV_SetDefaultPalette if the greyscale mode flag is set New sprite types: - s.vdu.vdudriver - Extend GenerateModeSelectorVars to deal with the wide mask flag, 64K sprites, and the new RISC OS 5 sprite mode word format. - s.vdu.vdugrafdec - Store more information about the sprite in the SprReadNColour ... SprLog2BPC block. - s.vdu.vdugrafg - Update SpriteVecHandler to be able to detect whether RISC OS 5 format sprites are allowed palettes. Update SetupSprModeData to store the extra sprite info that's defined in vdugrafdec. Update PutSprite to fault any sprites with wide masks - SpriteExtend must be used for that (once implemented!) - s.vdu.vdugrafh - Update WritePixelColour to avoid temporary poking of NColour VDU variable for 8bpp sprites. Correctly replicate data when writing to RISC OS 5 format sprites. Update ReadPixelMask, WritePixelMask, SpriteMaskAddr, GetMaskspWidth to deal with wide masks. Delete obsolete bounce_new_format_masks routine. - s.vdu.vdugrafi - Comment updated to reflect new reality - s.vdu.vdugrafj - Get rid of unused code block in CreateHeader/PostCreateHeader. Update SanitizeSGetMode to generate RISC OS 5 style sprite mode words where applicable. Update DecideMaskSize to rely on GetMaskspWidth for calculating mask width. - s.vdu.vdugrafl - Update SwitchOutputToSprite/SwitchOutputToMask to deal with the new sprite formats. Allow PushModeInfoAnyMonitor to fail. - s.vdu.vduswis - Extended OS_ReadModeVariable to cope with new sprite types Misc: - s.vdu.vdudriver - Fixed bug with VIDCList copying where any -1 value in the structure would terminate the copy, instead of only -1 as a control item number - s.vdu.vduswis - Implemented OS_ScreenMode 13 (Mode string to specifier), 14 (mode specifier to string), and 15 (set mode by string). Mostly as per ROL's specs, but minus support for teletext attributes, and plus support for new RISC OS 5 attributes (L... layout specifier, 4096 & 24bpp packed modes, etc.) - s.vdu.vduwrch - Pick correct default text colours for the new modes Admin: Tested on BB-xM Part of an implementation of the Extended Framebuffer Format spec: http://www.riscosopen.org/wiki/documentation/show/Extended%20Framebuffer%20Format%20Specification Version 5.35, 4.79.2.194. Tagged as 'Kernel-5_35-4_79_2_194'
-
- 28 Mar, 2013 1 commit
-
-
Jeffrey Lee authored
Detail: Briefly, this set of changes: * Adjusts PhysRamTable so that it retains the flags passed in by the HAL from OS_AddRAM (by storing them in the lower 12 bits of the size field) * Sorts the non-VRAM entries of PhysRamTable by speed and DMA capability, to ensure optimal memory allocation during OS startup. * Adjust the initial memory allocation logic to allow the cursor/sound chunk and HAL noncacheable workspace to come from DMA capable memory * Extends OS_Memory 12 to accept a 'must be DMA capable' flag in bit 8 of R0. This is the same as available in ROL's OS. * Extends OS_DynamicArea 0 to allow the creation of dynamic areas that automatically allocate from DMA capable memory. In ROL's OS this was done by setting bit 12 of R4, but we're using bits 12-14 for specifying the cache policy, so instead bit 15 is used. * Fixes OS_ReadSysInfo 6 to return the correct DevicesEnd value now that the IRQ/device limit is computed at runtime File changes: * hdr/OSEntries - Add definitions of the various flags passed to OS_AddRAM by the HAL. Add a new flag, NoDMA, for memory which can't be used for DMA. * hdr/KernelWS - Tidy PhysRamTable definition a bit by removing all the DRAM bank definitions except the first - this makes it easier to search for code which is interacting with the table. Remove VRAMFlags, it's redundant now that the flags are kept in the table. Add DMA allocation info to InitWs. * s/AMBControl/memmap - Updated to mask out the flags from PhysRamTable when reading RAM block sizes. * s/ARM600 - Strip out a lot of IOMD specific pre-HAL code. * s/ChangeDyn - Updated to cope with the flags stored in PhysRamTable. Implement support for DMA-capable dynamic areas. Rewrite InitDynamicAreas to insert pages into the free pool in the right order so that the fastest memory will be taken from it first. * s/GetAll, s/Middle - Fix OS_ReadSysInfo 6 to return the correct HAL-specific DevicesEnd value * s/HAL - Significant rework of initial RAM allocation code to allow the kernel workspace to come from the fastest DMA incapable RAM, while also allowing allocation of DMA capable memory for HAL NCNB workspace & kernel cursor/sound chunks. ClearPhysRAM rewritten as part of this. * s/MemInfo - Updated to cope with the flags stored in PhysRamTable. Add support for the new OS_Memory 12 flag. Update OS_Memory 7 to not assume PhysRamTable entries are sorted in address order, and rip out the old pre-HAL IOMD implementation. * s/NewReset - Remove GetPagesFromFreePool option, assume TRUE (as this has been the case for the past 10+ years). Revise a few comments and strip dead code. Update to cope with PhysRamTable flags. * s/VMSAv6 - Remove a couple of unused definitions * s/vdu/vdudriver - Update to cope with PhysRamTable flags Admin: Tested in Kinetic RiscPC ROM softload, Iyonix softload, & OMAP3 Version 5.35, 4.79.2.186. Tagged as 'Kernel-5_35-4_79_2_186'
-
- 05 Dec, 2012 1 commit
-
-
Jeffrey Lee authored
Detail: s/vdu/vducursoft - TeletextFlashTest now stores the updated TeletextCount before calling SetVinit. This provides some protection against getting stuck in an infinite loop (+ stack overflow) if SetVinit takes longer than 1 VSync to complete (or some other catastrophe occurs) Admin: Tested on Raspberry Pi Version 5.35, 4.79.2.179. Tagged as 'Kernel-5_35-4_79_2_179'
-
- 17 Nov, 2012 1 commit
-
-
Robert Sprowson authored
Temporary assignment changed to one from Hdr:NewErrors. Version 5.35, 4.79.2.176. Tagged as 'Kernel-5_35-4_79_2_176'
-
- 28 Oct, 2012 1 commit
-
-
Robert Sprowson authored
Variously the call to TranslateError was either followed (outside the switch) by an unnecessary SETV, or missing SETV for the non international case. Added DMA controller HAL device for IOMD. Version 5.35, 4.79.2.174. Tagged as 'Kernel-5_35-4_79_2_174'
-
- 18 Sep, 2012 1 commit
-
-
Jeffrey Lee authored
Fix addresses sent to GraphicsV_SetDMAAddress when external framestore in use. Add ID for BCM2835 VDU HAL device. Detail: hdr/KernelWS, s/vdu/vdudriver, s/vdu/vduwrch - Fixed wrong addresses being sent to GraphicsV_SetDMAAddress when an external framestore is in use. Previously VideoPhysAddr was being treated as if it was the base of screen memory, but that's only the case if an internal framestore is in use. Since VideoPhysAddr is part of PhysRamTable it's not possible to change it to point to an external framestore, so a new workspace variable, TrueVideoPhysAddr, is used instead. hdr/HALDevice - Added device ID for BCM2835 VDU device s/PMF/IIC - Corrected an incorrect comment in IICDoOp Admin: Tested on Raspberry Pi with high processor vectors Version 5.35, 4.79.2.147.2.22. Tagged as 'Kernel-5_35-4_79_2_147_2_22'
-
- 07 Sep, 2012 1 commit
-
-
Jeffrey Lee authored
Detail: Docs/RPiNotes - Deleted, contents no longer relevant s/HAL, s/Kernel, s/vdu/vduswis, s/pmf/key - Cleaned up debug code s/NewIRQs - No need to piggy back on timer 0 IRQ to generate a fake VSync; PushModeInfo already claims/releases TickerV as appropriate if video driver doesn't provide a VSync IRQ. s/NewReset - Re-enable LookForHALRTC call, the stack imbalance bug was fixed before the Pi changes were merged in s/vdu/vducursoft - Streamline PostWrchCursor a bit by only preserving R14 around RestorePointer if the software pointer is in use s/vdu/vdudriver - Amend ModeChangeSub improvements to ensure old external framestore handling logic is used if driver doesn't support framestore growth/realloc Admin: Tested on Raspberry Pi with high processor vectors Kernel now looks to be in a good state for merging back into HAL branch Note - Software mouse pointer support in vducursoft only checks HALVideoFeatures, so doesn't take into account the capabilities of any GraphicsV driver that may be in use. Version 5.35, 4.79.2.147.2.20. Tagged as 'Kernel-5_35-4_79_2_147_2_20'
-