     The  following  information is extracted  from  the  on-disk 
newsletters  for volumes 1 and 2 of the CBASIC USERS GROUP.  They 
can be contacted as follows:

                       CBUG
                       3208 Magicwoods Circle
                       Sacramento, CA 95827
                       ATTN: Joe Butler
                       Phone: (916) 366-7840
 
HARDWARE SECTION 
 
All  the software that comes on a diskette from the Cbasic  users 
group  will run on CP/M,  CDOS,  and MOS/80.  How do I know this?  
Well, I checked the software myself. I might add that most of the 
software  that  I  have written  lately,  will  be  'laced'  with 
assembler  code.  Isn't it wonderful what you can do with Cbasic? 
So please check the code very carefully. I know that it works, so 
if you have any bugs, it is in your operating system. 
    
 
 
PROBLEMS AND BUGS
 
     While working with a Kaypro machine,  I ran across an inter-
esting  bug.  On  the Cbug diskette,  you will notice  a  program 
called  'DIRECTIO'.  Well,  I've been writing an application  for 
this  machine  that needed a console input  without  any  special 
characters coming across (e.g.  ^S, ^P, line feed characters.) It 
seems  that the customer needs strained console I/O,  so the pro-
gram 'DIRECTIO' works just fine, except that the disk drives stay 
on, until you depress any character on the keyboard. I've got the 
routine  at D000 hex and it is below the  operating  system.   So 
far,  I haven't any clues. Anybody out there know what the answer 
is?  I've  called  Linear  Systems,  and they haven't  any  idea. 
Anywho, somebody let me know.
    
     David  Kroutil,  of American Data,  Inc.  has run across  an 
interesting bug in Cbasic. To give you a little background, David 
is  selling a beefed-up version of the McGraw-Hill software  with 
all the bells and whistles you can think of.  The price,  I might 
add,  is very reasonable, too. He even has documentation! I don't 
know the price, but I'll find out. Anyways, David ran his Payroll 
package and gets this weird error:  ERROR EO 54. David has called 
Compiler Systems,  the originator of Cbasic, and Digital Research 
Inc., but to no avail. It seems that either they won't  help them 
because they don't know,  or they don't want to tell anyone  what 
the error is. If anyone knows this one, or knows anyone who does, 
I'll give the next diskette of software away to him free! 
    
     Clark of Lodestar Computer Systems,  has come up with a good 
bug.  The details are in PRBLM001.TXT. Briefly, the problem looks 
like  this:   Whenever you use the common statement to pass vari-
ables  and strings to other programs,  you can only  transmit  so 
many.  In  other words,  it looks like there is a ceiling on  the 
amount  of space for the common statements.  I haven't found any-
thing in the CBASIC manual to dictate otherwise. Anyone know this 
one?
    
     I came across an interesting bug,  or so I  thought.  Later, 
after talking with Digital Research, I found that the answer was 
in  their  new  manual on page  4.  Boy,  that  was  embarassing! 
Anyways,  look  at the programs,  TRY1 and TRY2.  I was trying to 
pass a string array in a common statement for another program  to 
access.  My  problem was,  that I redimensioned the string in the 
second program.  That's a no-no when the string array is  already 
dimensioned  in  the primary program.  All I ended up  doing  was 
nulling the array! Be careful of that one!
 
The following is a blow by blow description of the programs:
    
CBAS.TST   Program to test the MEMTEST function in CBASIC.  Check 
on CBASTEST.ASM  and TEST.BAS.  These programs came from Mr. Jack 
Owens of Sacramento, Ca. 
 
By now,  I bet that you are trying to figure out how I got a copy 
of the directory using X.COM,  in this newsletter.  Well,  if you 
look at CONS.COM, CONS.ASM, CONSGRAB.ASM, AND CLOSE.COM, you will 
find  out.  I  wrote these programs a while ago  to  capture  the 
console  I/O.  They  will work on CP/M just fine.  For  CDOS  and 
MOS/80,  give me a buzz.  They are a S.O.B.  to change.  There is 
only  one  small problem to this;  you have to be able to get  to 
your BIOS to add CONSGRAB.ASM to it.
    
DIR.BAS   This is a program to call up the directory  in  CBASIC. 
The program will accept ambiguous and unambiguous markers to find 
the files on the directory.  What you also are thinking about is, 
this  program  can  be  adapted  for a front  end  menu  for  any 
application;  e.g.  like MENU MASTER. It's a neat little program, 
combining Assembler and Cbasic.  It should be a good tutorial for 
those  programmers  out there,  who are  having  difficulty  with 
assembler.
    
DIRECTIO.BAS  This program,  again a combination of Assembler and 
Cbasic,  demonstrates  a direct console I/O,  which bypasses  the 
operating system.  I mean,  that if some ignorant person tries to 
do  a control C in my application,  he's in for a  surprise!  The 
program  pokes a maching language routine way up at A000 hex  and 
does  a  call  to it when it needs to do  some  work.  From  this 
example, the whole world of BDOS and BIOS calls are open to you.
    
DOW.BAS  You've always wanted a Day of the Week  routine,  right?  
Well,  here it is.  If you look at the code, you will see a nifty 
routine to duplicate the HEX$ routine of MBASIC.  the DOW routine 
lets you put in a MMDDYY format and come out with the day of  the 
week. Further study will give you the Julian date if you need it.
    
FINDCTL.BAS This is just a little routine to show you the min and 
max  tracks and sectors allocated for a particular  cluster.  The 
reason  that I wrote this routine,  is that the Digital  Research 
manuals  are  a  bit  scarce  in information  when  it  comes  to 
pertinent  info.  on the disk parameters.  To complicate  matters 
further,  I have a copy of MOS/80 from Infosoft and Mostek, and I 
was trying to access a hard disk,  block by block.  Anyways,  you 
will  probably want to use the algorithm for direct block  access 
to a foreign disk. That's what I am now using it for.
    
GNXXXXXX.BAS These programs are a skeleton database for use  with 
any straight and easy application, using the KISS philosiphy. You 
know,  keep it simple stupid! There are three programs; a menu, a 
screen  input/output,   and  a  report  program.   All  you,  the 
programmer has to do,  is fill in the missing blanks. Now you are 
probably wondering what the modules are for and what do all those 
variables mean?  If you will look on the diskette,  you will find 
the following:
    
GNXXXXXX.LIN - Text explaining what the modules mean.
GNXXXXXX.XRF - Text explaining what all the variables mean.
    
As long as you don't change any of the text in the programs, they 
will work fine.  But if you do, I hope that you know what you are 
doing, but if you don't, drop me a letter with the problem. 
By  the  way,  you  will  need two other programs  to  run  these 
programs. SCREEN.FIL and COMPANY.DA. 
    
SCREEN.FIL is a file that has all your CRT parameters.  Check  on 
GNMENU.BAS for the particular layout.
    
COMPANY.DA  is a file that has the company info, date of creation, 
password,  etc.  The  program only uses the company and  date  of 
creation  and one other variable to store the present  date.  The 
rest are yours to use.
    
SLEUTH.BAS This is a program right from the latest MICROCOMPUTING 
magazine,  written by James Monagan. This is one of the best XREF 
type programs I've seen in a long time. Not only that, the son of 
a gun works! Not many people know this, but XREF has a bug in it. 
It  will  only take so many variables.  No comment  from  Digital 
Research.  Anyways,  James Monagan has done a helluva job on this 
one. 
 
COMPANY.DA is a file that has the company info, date of creation, 
password,  etc.  The  program only uses the company and  date  of 
creation  and one other variable to store the present  date.  The 
rest are yours to use.

The following programs belong together as a database application:
NADMENU.BAS, NADSCRN.BAS, NADREPT.BAS, NADMAIL.BAS, NAD.FIL.
    
NADMENU.BAS is the menu to the Name & Address with Mailing Labels 
Application.  If  you take the time to type the program out,  you 
will find that I am using my skeleton of GNMENU.BAS for  it.  You 
will  also notice that I have a machine language routine in  high 
memory. This is the screen input routine. It grabs all characters 
and  filters  them.  It  is called BDOS #6 in  the  CP/M  Manual. 
Anyways,  you should find a lot of use with this application, not 
to  mention  using  this  menu program as a  skeleton  for  other 
applications.
    
NADSCRN.BAS is the screen and file I/O for the application.  This 
program uses a lot of new tricks in screen input.  You will  also 
notice that I again used a skeleton: that of GNSCREEN.BAS.  
    
NADREPT.BAS  is  the  report program of all  the  information  in 
NAD.FIL. Again, I have used a skeleton; that of GNREPORT.BAS.
    
NADMAIL.BAS is the mailing label report program.  As you can see, 
I have modified the skeleton of GNREPORT.BAS a little to make the 
mailing label module.
    
NAD.FIL is, of course, the application file. The parameters are:
    
         Record length: 224 characters.
         Field count  : 10
         Field case   : String
         Delimiter    : Comma
    
There  is  another program on this diskette that I know that  you 
will enjoy!  The program is called CREATE.BAS.  This program lets 
you  create  any  type  of  CBASIC data  file  with  just  a  few 
parameters. Hence the way the information for NAD.FIL is given. I 
use  this  program in my Database that I created.  I  think  this 
program will get a lot of use.
    
    
The following programs belong together as a database application:
BIBLIO.BAS, BIBBLD.BAS, BIBSRCH.BAS, BIBSR2.BAS, CMPRBIB.BAS, 
PARMS.BAS, VOCBLD.BAS, VOCLST.BAS
    
You can find all the particulars in BYTE Magazine. The article is 
on page 389 of the March 1983 Issue.  John Obermeier,  out newest 
member,  deserves the credit of typing all these programs in,  so 
he gets a free disk of software. Thanks John. The only thing that 
I have done, is clean it up. Anyways, enjoy!
    
GRABCOM.BAS  is  a  program I wrote for CB-80  to  show  the  GET 
function.  It  is  not documented very well in the CB-80  Manual. 
What it does is Open X.COM and spill the bytes out to the  screen 
one by one. Basically, all I wanted to show is how to use the GET 
command in CB-80 correctly.
    
POKEHI.BAS  is  a MBASIC program.  I wrote this little  thing  to 
deprotect MBASIC programs that I bought recently. The package was 
the  tax  programs from EAZI-TAX.  They have a bunch of  bugs  in 
them,  and  I called the people to get them fixed.  They couldn't 
give me satisfaction,  so I did it myself.  It just bugs me  that 
companies  are  selling  software  and  they  don't  support  it. 
Anyways,  this little program has a machine language routine that 
is poked up in high memory. You run this program first, type NEW, 
then load your protected program in and do the following: 
              
                 A=&HB000:CALL A   
    
That's all there is to it!  Just list your program and/or save to 
disk. Then you can convert your MBASIC program over to CBASIC and 
send it to me!
    
SMUGRBBS.DCP is the manual on how to use the RBBS by the Users
group, SMUG. Also, it describes the two other diskettes of
software. Just type it out to your printer.
    
 
SUMMARY 
 
 
For further information, problems, suggestions, please contact:
 
 
                  Joseph Butler
                  916 366 7840
 
 
