home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.asm.x86      Ahh, the lost art of x86 assembly      4,675 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 3,986 of 4,675   
   bilsch01 to All   
   can't read memory at 0xb8000   
   15 Dec 19 21:24:42   
   
   From: king621@nospicedham.comcast.net   
      
   I had an idea to write the file's starting cluster number a few spaces   
   to the left of the file name when I write a directory listing to the   
   screen using memory at 0xb8000. I used 00 for the background/foreground   
   bytes for the bytes of the cluster number so they don't show up on the   
   screen. When I change the bg/fg byte to 0x0f for the number 0x0003 it   
   shows as a black space followed by a white heart - which is correct. The   
   number 0x000d shows as a black space and a white musical note - which is   
   correct as far as I know. I'm sure the correct bytes are where I intend.   
      
   My idea is to position the cursor on a visible asterisk left of the file   
   name and hit the enter key. The program reads the invisible cluster   
   number written in the screen buffer 'to the left' of the asterisk. The   
   problem is that anywhere I place the cursor, hitting the enter key   
   returns 0x081b regardless where the cursor is on the screen. With the   
   cursor on the visible asterisk to the right of the invisible cluster   
   number bytes the following code executes:   
      
   mov ah,03		;get cursor position   
   int 0x10		;returns dh=row, dl=col   
   mov al,dh   
   mov bl,160   
   mul bl			;ax=dh*160   
   add dl,dl   
   movzx dx,dl		;dx=dl*2   
   add dx,ax		;screen buffer coord. of cursor   
   mov di,dx   
   sub di,2   
   mov ah,byte[es:di]	;hi byte of cluster #   
   sub di,2   
   mov al,byte[es:di]	;lo byte of cluster #   
      
   This code returns 0x081b in ax regardless of where the cursor is -   
   anywhere on the screen. Apparently it's not possible to read the bytes   
   from the screen buffer like this.  Does anyone know how to do this?   
   TIA.   Bill S.   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca