+9640News Posted February 5, 2019 Share Posted February 5, 2019 I tried some test code the other night, and I did not get what I was expecting. I thought I could each of the text pages on the 9938 to have their own unique character sets for characters 0 to 255. So, simply by flipping from one page to another, besides changing what was on the screen, it would also use the new character set if one was different. I'm using a mixture of of the VIDEO XOP's and direct video writes. Is there any reason why my thoughts are not correct? Beery Quote Link to comment Share on other sites More sharing options...
+FarmerPotato Posted February 5, 2019 Share Posted February 5, 2019 I tried some test code the other night, and I did not get what I was expecting. I thought I could each of the text pages on the 9938 to have their own unique character sets for characters 0 to 255. So, simply by flipping from one page to another, besides changing what was on the screen, it would also use the new character set if one was different. I'm using a mixture of of the VIDEO XOP's and direct video writes. Is there any reason why my thoughts are not correct? Beery Are you changing the pattern generator table address (in VDP R#4?) Quote Link to comment Share on other sites More sharing options...
+9640News Posted February 5, 2019 Author Share Posted February 5, 2019 No, not chaning the table. Is it possible to have the pattern layout for table 0 in view, and reference the pattern table layout for table 1? Either way, looks like I will need to avoid using the XOP's for what I am trying to do. I'm trying to free up about 2K as I switch between an ANSI character set and an inverse video set. Beery Quote Link to comment Share on other sites More sharing options...
+FarmerPotato Posted February 5, 2019 Share Posted February 5, 2019 I forget what the XOPs do and I can't find my MDOS manual. is this accurate? http://ftp.whtech.com/Geneve/mdos/MDOS%20Development%20documents/Video%20XOP's.pdf I think I used XOP 1 to set the mode and then wrote everything else direct. What does XOP 4 do? SetDisPage. It does have a flag to set tables or not. I see XOP >37 GetTables which looks useful. You can get inverse characters, or a second color of text, by setting up the 9938 directly in Text2 mode (80 column). 1. Set VR12 to the other FG-BG colors (like VR7) 2. Set the color table address using VR3 and VR10 (high bits) 3. Set the ON and OFF times in VR13. OFF time is the duration that colors in VR7 apply, ON time is the duration that colors in VR12 apply to positions with the Blink bit set. Always ON: set VR13 to >F0. Equal ON/OFF blink time: >66 (for example). 4. To "blink" the Nth screen image table position, set the Nth bit in the color table. Quote Link to comment Share on other sites More sharing options...
+9640News Posted February 5, 2019 Author Share Posted February 5, 2019 I forget what the XOPs do and I can't find my MDOS manual. is this accurate? http://ftp.whtech.com/Geneve/mdos/MDOS%20Development%20documents/Video%20XOP's.pdf I think I used XOP 1 to set the mode and then wrote everything else direct. What does XOP 4 do? SetDisPage. It does have a flag to set tables or not. I see XOP >37 GetTables which looks useful. Text Mode 2 was setup by the Video XOP, then there are direct video writes setting up some registers, background colors, etc. The original code did an inverse of bytes 0 through 127 and placed in 128 through 255 to get an "inverse" effect when scrolling through menu options. ANSI definitions are defined for 128 through 255. So, when I drop from a terminal screen back to a menu, the way the code was originally setup, I have to rewrite the inverse character definitions for 128 through 255. This causes anything "behind" the menu that was originally ANSI 128 through 255 to have those characters redefined. I then have to restore the ANSI character set after exiting the menu. I'm really trying to avoid rewriting the handling of the menu screen code and my first thought had been to flip from text mode page 0 to text mode page 1 via an XOP thinking the pattern definition table would automatically change with it as well. That does not seem to be happening, and as I am thinking about it, MDOS was never made aware bytes 128 through 255 had been redefined as the terminal program wrote that out to the pattern table directly. It may actually be pulling from the original "default" values and does nothing with 128 through 255. I'm not entirely sure what the MDOS XOP code to change text pages is doing, and may need to investigate the MDOS source code itself. My intent is to free up the ANSI character definition I have contained in the source code, and move it to something like a CHARA1 file that is loaded on startup freeing up some memory. Beery Quote Link to comment Share on other sites More sharing options...
+InsaneMultitasker Posted February 5, 2019 Share Posted February 5, 2019 Beery, For text2 mode I often use the XOPS to set up the tables and screen. I can then choose to use the XOPS (for windowed text) or direct video read/write (for speed). I use the method FarmerPotato outlines in his post for simulating inverse characters by leveraging the blink attribute. This also lets you select different colors for the 'inverted' characters. Long ago I submitted some routines that you published in 9640News. Not very pretty but they are the basis for menus in some of my programs like PORT and CYA. I'm not sure if they include the blink attribute routines or the menu picklist routine. I originally wrote the code while playing around with Super Mass Transfer. I think the XOPs have a facility for resetting tables but I've never tried to do what you describe in your original post. MDOS is aware of characters 128-255. The IBMGRF command will turn this on/off. The defs can carry over to other programs if they don't reset the tables, and MDOS will restore the character defs under most conditions when the program terminates. 1 Quote Link to comment Share on other sites More sharing options...
+9640News Posted February 6, 2019 Author Share Posted February 6, 2019 I've used the blink attribute in the past as well for a menu item. I need to recall what program(s) I did that with. Sounds like that may be the more logical approach to do that. Now, just gotta figure out how easy that is to implement within the existing menu code. Probably need to go through the issues of 9640News and see if anything rings a bell. Beery Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.