; > PrivDoc.ScreenMode Still to do on screen mode selection, as of 21-Jul-93: Key: + Done and tested - Done but not tested * Still to do x Not done for a good reason + Make OS_ReadModeVariable work with mode selectors + OS_ScreenMode(ReturnMode) + OS_ScreenMode(EnumerateModes) + Create variable holding video bandwidth + Add this reason code to just load up video bandwidth, VideoSize and issue service + Service_ModeExtension additions + Load up r4 and r5 with video bandwidth, VideoSize respectively + Change vdugrafg:SetUpSprModeData:04 to check for mode selector, and goto 10 if so + Check other occurrences of BranchIfKnownMode to look for similar bits + Put code to handle new sprite mode word into PushModeInfo (any monitor only?) + Remove new sprite mode word fudging in vdugrafg:SetupSprModeData and vdugrafl:SwitchOutputToSprite + Make SwitchOutputToSprite(new format) set up ECFIndex (it doesn't at the moment!) + Make sure tests for equal mode numbers don't assume equal ptrs to mode selectors are equivalent + Modify NewModes module to respond to Service_EnumerateScreenModes, to test enumeration. + OS_ScreenMode(SetMonitorType) + Allocate soft copy for monitortype + Write routine to update soft copy from CMOS + Call this routine in initialisation + Make *Configure MonitorType update soft copy + Change ReadMonitorType to read from soft copy + Add this reason code to either store given value or update from CMOS + Make sprites which have mode selectors as their mode word illegal + Move conversion of mode selectors to new format sprite mode words into PreCreateHeader, rather than PostCreateHeader, so that it doesn't call SetupSprModeData with a (now illegal) mode selector -> MT ScreenModes module -> AG Make switch output to sprite for a new format sprite make mode selector for current mode? -> AG *ScreenSave in mode 50 seems to produce a sprite with a palette. -> NK Trying to set a WimpMode with XEigFactor=27 caused data abort. Investigate and/or range-limit values. -> AG Put in support for returning errors from PushModeInfo (for bad mode selectors and new format sprite mode words): + Make mode change routine check for error from PushModeInfo and FindOKMode + Make FindSubstitute check errors from PushModeInfo + Make FindOKMode check errors from FindSubstitute + Make CheckModeValid check errors from FindOKMode + Make SetupSprModeData capable of returning errors: + Ditto SpriteV handler (already OK) + Ditto PreCreateHeader + Ditto CreateHeader + Ditto GetSprite -> AG Make SwitchOutputToSprite/Mask check errors from PushModeInfo - Design and code algorithm for working out FIFO reload position for VIDC20 (Still need explanation from ARM of why 7 quad-words doesn't always work) * OS_ScreenMode(SelectMode) + Make normal mode selection routine into a subroutine + Write veneers to put round call to this in OS_ScreenMode(SelectMode) * Change actual mode change code to cope with mode selectors + Prevent main routine looking at shadow bit in mode selector + Modify FindOKMode to cope with mode selector + Modify OS_CheckModeValid to cope with mode selector + Make all pushed mode variables into words (not bytes) + Modify PushModeInfo to cope with mode selector + Make YEigFactor default to 2 if yres < xres/2 (and change spec. to reflect that) + Make numbered modes work after loading mode file + Allocate space for OS copy of mode selector x Make OS mode selector part of saved VDU context (not needed since sprites can't have mode selectors as their mode) x Sort out internal mode variables PalIndex, ECFIndex wrt converting existing mode numbers into mode selectors (no need, still use old workspace-getting code) x Make mode selector blocks for all existing numbered modes (no need, constructed on fly since only needed during svc call) * Check that copying mode selector has no adverse effects * Sort out why issuing a mode change with invalid mode selector doesn't give error * Modify FindOKMode to cope with 16 and 32 bpp modes somehow * Prevent pointer position from going into the sync pulse (causes screen picture disruption) * Adjust borders on all modes, to cope with VIDC20 problem (Needs algorithm from ARM that works!) * Mode change happily passes round any old rubbish to Service_ModeExtension - it should:- * First check that value is word-aligned - if not it may be a new sprite mode word * Do a Validate_Address on fixed bit of block? * What should *ScreenLoad do with a new format sprite?