- 14 Jul, 2018 1 commit
-
-
Jeffrey Lee authored
Detail: ECFIndex and PalIndex claim to be mode variables, but it's impossible for extension modes to specify their values. Since they're easy to calculate from the ModeFlags and Log2BPP values, drop them from the mode workspace (+ table of builtin modes) and calculate them on the fly instead. File changes: - hdr/KernelWS - Drop ECFIndex & PalIndex from workspace - s/vdu/vdumodes - Adjust workspace definition, drop ECFIndex & PalIndex values from VWSTAB - s/vdu/vdudriver - Remove now-redundant copy loop from ModeChangeSub. Remove code from GenerateModeSelectorVars that sets up the ECFIndex & PalIndex values on the stack - s/vdu/vdugrafl - Adjust copy loop in SwitchOutputToSprite/Mask - s/vdu/vdupalette, s/vdu/vdupalxx - Add GetPalIndex routine to generate PalIndex on the fly. Drop the obsolete 16bpp palette/gamma table and shuffle the other entries to simplify GetPalIndex a bit. - s/vdu/vduplot - Add GetECFIndex routine to generate ECFIndex on the fly. Also, fix things so that mode 0 isn't the only rectangular-pixel mode which uses the special rectangular-pixel ECF patterns (index 0 vs. index 4). Fiddle with ExportedHLine a bit to avoid an out-of-range ADR. - s/NewReset - Fix UAL warning for MOV R0, AppSpaceStart. Adjust memset to not assume 512KB is the correct amount Admin: Tested on Raspberry Pi 3 Version 6.11. Tagged as 'Kernel-6_11'
-
- 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'
-
- 17 May, 2009 1 commit
-
-
Ben Avison authored
Detail: * Stopped calling the broken abort fixup code when running under VMSAv6. Might be desirable to update it, possibly farmed out to a separate module - still need to think about this. * Unaligned load optimisations can now be disabled by the global NoUnaligned flag for testing purposes. * Extended OS_ReadUnsigned to permit reading of 64-bit unsigned integers. See Docs.ReadUnsigned for more details. Also sped it up by using MLA (or UMLAL) for most digits rather than repeated addition. * Bugfix is OS_GSRead: an uninitialised r0 was being passed to OS_ReadUnsigned, causing undesirable effects on rare occasions. Admin: Tested on a rev B7 beagleboard. Version 5.35, 4.79.2.98.2.8. Tagged as 'Kernel-5_35-4_79_2_98_2_8'
-
- 10 May, 2009 1 commit
-
-
Ben Avison authored
Detail: Having scanned the kernel source for unaligned load code fragments which would abort on ARMv6 and v7 and not having found any, I took the opportunity to give them build-time switches to use unaligned LDR((S)H)/STR(H) instructions if built for a new enough platform. Also added a couple of cases of LDRSB that will benefit v4 CPUs and a few instances of the v6 SXTH instruction, but since objasm doesn't yet understand it (and when it does, not everyone will have upgraded) they are currently written as DCI statements. Most of the changes are to OS_Word handlers, which are notorious in that their input/output block is not word-aligned. Admin: Not tested, but it should at least build. Version 5.35, 4.79.2.98.2.6. Tagged as 'Kernel-5_35-4_79_2_98_2_6'
-
- 06 May, 2004 1 commit
-
-
Kevin Bracey authored
[Not fully implemented - for now leaves at least 16MB free if only one RAM area; was 1MB]. * Added HAL_USBControllerInfo, HAL_MonitorLeadID and HAL_Video_Render. * Added HAL->OS call OS_IICOpV. * OS_MMUControl now allows independent control of I and C bits. * Added facility to deactivate keyboard debounce (magic word "NoKd" in R2 in KeyV 0). * Fixed problem with RAM amounts not a multiple of 4MB. * Supremacy bit (in VDU 19) now sets all 8 bits of supremacy. * Added PaletteV 14 (reads gamma tables). * Added Supremacy transfer functions (like gamma correction, but for supremacy). Allows easy global supremacy effects in a mode-independent fashion. Controlled with PaletteV 15,16. * Added modes 50-53 (320x240, 1,2,4,8bpp). Intended for small LCD. * Added 13.5kHz versions of TV modes (selected by Hdr:Machine). * Upped desktop version to 5.06. Version 5.35, 4.79.2.66. Tagged as 'Kernel-5_35-4_79_2_66'
-
- 15 Sep, 2000 1 commit
-
-
Kevin Bracey authored
* Added ARM_IMB and ARM_IMBRange SWIs as recommended by ARMv5. * Some early prototype HAL bits popped in - a lot of source restructuring still to come. * New debug target creates an AIF image with debug information, and translates this into an ASCII object file for the 16702B logic analyser. Version 5.35, 4.79.2.1. Tagged as 'Kernel-5_35-4_79_2_1'
-
- 04 Apr, 2000 1 commit
-
-
Kevin Bracey authored
Details: The Kernel will now compile to produce a pure 32-bit system if No26bitCode is set to TRUE. If No26bitCode is FALSE, then the Kernel will be a standard 26-bit Kernel, although some internal changes have taken place to minimise compile switches between the two cases. See Docs.32bit for more technical info. The hardest part was the flood-fill... Other changes: Pointer shape changes now take place on the next VSync, rather than actually WAITING for the VSync. Turning the Hourglass on shouldn't slow your machine down by 5% now :) Lots of really crusty pre-IOMD code removed. Admin: Tested in 32 and 26-bit forms in a limited desktop build. Basically, this will need to see a lot of use to iron out difficulties. I'd like anyone who has a non-frozen project to at least attempt using this Kernel. Version 5.23. Tagged as 'Kernel-5_23'
-
- 05 Nov, 1996 1 commit
-
-
Neil Turton authored
-