From: NoEmail@nospicedham.trraxvfeqa.prg   
      
   On Wed, 4 Apr 2018 17:51:23 -0700   
   bilsch wrote:   
      
   > My simple OS uses int 0x10 to display o/p. I'm adding a routine (txt)   
   > that is a simple text editor which writes to memory at segment   
   > 0xb800. I enter/exit the txt routine using call/ret. Once I have   
   > filled the screen with text using the txt routine and then ret back   
   > to the OS loop subsequent int 0x10 o/p does not get shown on the   
   > screen. Even when the cursor is repositioned to row/col 0/0. How do   
   > I get int 0x10 display capability back after filling the screen using   
   > memory at 0xb800? TIA. Bill S.   
      
   Does your OS use PM (protected mode)? Is your OS switching from PM to   
   RM (real mode) or v86 mode to call Int 10h? Or, is it purely 16-bit RM?   
      
   (assuming 16-bit RM for now ...)   
      
   Do you explicitly set all necessary registers prior to /every/ Int 10h,   
   or just the first time you call Int 10h?   
      
   What happens if you wrap the call to the text routine with PUSHA and   
   POPA to preserve and restore the calling registers?   
      
   I.e., I'd suspect that a register, one which you're expecting to be   
   preserved, is likely being corrupted or modified, either by the BIOS or   
   your OS.   
      
   Some BIOS routines modify additional registers other than those listed,   
   or change initial values of the input registers. Some BIOS routines   
   also need to have the carry flag set via STC prior to being called.   
   Also, could the BIOS routine be sensitive to the state of the direction   
   flag? e.g., STD/CLD for STOSB/MOVSB   
      
      
   Rod Pemberton   
   --   
   "What do you mean I hurt your feelings? I didn't know you had any   
   feelings." "And, if I offended you, oh, I'm sorry, but maybe you need   
   to be offended!"   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|