[net.micro.cpm] changing user areas

ihom@nosc.ARPA (02/27/85)

The BDOS function code for "getting" and "setting" the user area is 20h.
The contents of register E determines whether to get or set.  If register
E contains FFh, then the curent user area is returned in register A.
Any other valid user number in register E will set you to that user.
i.e.
 
procedure change_users;
   const
      user_code = $0020;   { BDOS call }
      current = $FF;
   var
      new_user : byte;
   begin
      writeln('Current user is: ',bdos(user_code,current));
      write('New user? ');
      readln(new_user);
      bdos(user_code,new_user);
   end;

--Irwin Hom          {ihnp4, sdcsvax!bang}!crash!ihom
				 bang!crash!ihom@nosc
			       sdamos!crash!ihom@ucsd

37270588%sdcc3@sdcsvax.ARPA (02/27/85)

>  Sorry to keep bugging you about this things but I've run into another little
>problem, I need to be able to change the user area from the program. The
>inline statement totally confused me and the Bdos function adjusts the wrong
>register. Do you know how to change to the user area?
 
------------
 
The BDOS function code for "getting" and "setting" the user area is 20h.
Perhaps you are not distinguishing hex from decimal or vice-versa (20h = 32d).
Anyways, the contents of register E determines whether to get or set the user
area.  If register E contains FFh, then the curent user area is returned in
register A.  Any other valid user number in register E will set you to that
user number.  i.e.
 
procedure change_users;
   const
      user_code = $0020;   { BDOS call }
      current = $FF;
   var
      new_user : byte;
   begin
      writeln('Current user is: ',bdos(user_code,current));
      write('New user? ');
      readln(new_user);
      bdos(user_code,new_user);   { put new_user in register E to change }
   end;
 
 
--Irwin Hom             {ihnp4, sdcsvax!bang}!crash!ihom
                                    bang!crash!ihom@nosc
                                  sdamos!crash!ihom@ucsd