Copy Link
Add to Bookmark
Report
AtariST developers: Question and Answer Bulletin - March 1986
------------------------------------------------------------
| |
| AAA TTTTT AAA RRRR III **** SSS TTTTT|
|A A T A A R R I **** S S T |
|A A T A A R R I **** S T |
|AAAAA T AAAAA RRRR I ****** SSS T |
|A A T A A R R I ** ** ** S T |
|A A T A A R R I ** ** ** S S T |
|A A T A A R R III ** ** ** SSS T |
| |
|DDDD EEEEE V V EEEEE L OOO PPPP EEEEE RRRR SSS |
|D D E V V E L O O P P E R R S S|
|D D E V V E L O O P P E R R S |
|D D EEEE V V EEEE L O O PPPP EEEE RRRR SSS |
|D D E V V E L O O P E R R S|
|D D E V V E L O O P E R R S S|
|DDDD EEEEE V EEEEE LLLL OOO P EEEEE R R SSS |
| |
------------------------------------------------------------
Question and Answer Bulletin March 1986
Copyright (C) 1986 by Atari Corp. "all rights reserved"
1196 Borregas Ave., Sunnyvale, Ca. 94086
------------------------------------------------------------
Here are the latest questions from the Atari developers
mailbag as answered by John Feagans, Director of Software
Technology. Leave questions on Compuserve for PIN 70007,1072
or GO PCS57 for Atari developer SIG information.
Q How can I print the special characters in the Atari character
set between codes 0 and 31?
A You can use either the bios or the VDI. Device 5 on Bconout
is a raw character output device that does not do an
interpretation of character codes. You can alternate between
output to console and this device to do cursor positioning
and new lines. The VDI call to use is v_gtext. This routine
accepts character indices between 0 and 255. You should be
careful in using these character codes because they are only
defined in the three system fonts: 6 x 6, 8 x 8, and 8 x 16.
The VDI specification does not require loadable fonts to have
characters in these positions.
Q When I dump a file to my printer, the first line prints
across and then printing hangs up at the right margin. What
is going on?
A Check if your printer has a switch select position for
generating a line feed after a carriage return is received.
Some software will generate only a return and count on the
Bios to generate the line-feed--TOS does not do this. If
your printer does not have this facility, some programs such
as STWriter and 1st Word have configuration files which
define the end of line sequence which you can set for proper
operation with your printer.
Q Why don't the numeric pad and the cursor keys work in the VT
52 emulator?
A The layout of the ST keyboard is patterned after the DEC VT
220. The VT 52 is an older but still popular terminal and
there is a dramatic difference--there are no cursor keys or a
numeric pad. The VT-52 emulator is a faithful reproduction
of this terminal--it does not use the cursor keys or the
numeric pad. Here is a brief summary of cursor escapes. The
full list is contained in the Hitchhiker's Guide.
ESC A Cursor up
ESC B Cursor down
ESC C Cursor forward
ESC D Cursor backward
Q I am writing a terminal emulator program. How can I smooth
scroll the screen?
A Refer to section 6 of the VDI manual on raster operations.
You can use the copy raster functions, vro_cpyfm and
vrt_cpyfm, to move blocks of data on the screen. You may
also want to double buffer the screen. Furthermore you can
move the pointer to the start of display memory.
Q My C program compiles fine but I get the following undefined
symbols in the link68 step -- getscanf, printf, fpmult, and
iob. I am linking with GEMLIB and LIBF.
A There is no symbol getscanf. Perhaps you mean getchar and
scanf? To resolve the other undefined symbols you must be
sure to #include stdio.h and also be sure the start file you
link with is gemstart.o
Q How can I write boot sector information? Is there an entry
in the DOS or BIOS for doing this?
A Use the protobt() extended BIOS call to create a boot sector.
The disktype parameter should be 2 or 3 for 1 or 2 sided
media respectively. The serialno parameter should be a
random number. The execflag should be zero unless the
prototyping buffer contains code (such as a copy of the
loader) that you want executed when the disk is booted.
Write the boot sector protyped in the buffer to track 0, side
0, sector 1 of the new disk. Use the extended bios function
flopwr().
Q I am using function 7 of line-A. I am trying to use a pattern
but I don't know what to put in the variable pattern_mask.
pattern_address seems to be set up correctly because my
pattern seems to almost come through.
A The pattern_mask variable is actually the length of the
pattern. That should be what will make your pattern work.
Q How can I put an icon on the desktop?
A There is no way to place an icon other than those built into
the system onto the desktop. The desktop is an application
program and it was not designed to interface the other way
from GEM AES. If you write your own application and create a
new desktop, there is nothing to prevent you from using your
own icons. A good example of this is the Resource
Construction Set. If you want to represent a desk accessory
by an icon you could open a nearly invisible window and print
the icon on it. The limitation on this method would be that
you could not drag other icons to it and be able to tell what
was moved. If you want to be able to drag things to your
program you must use the system icons. The procedure is to
build a loadable driver and change the desktop.inf to contain
the proper label information.
Q In the resource construction set, what is the difference
between a free-tree and a dialog box?
A A dialog box is a fixed format object list whose net result
when you draw it is obviously--a dialog box. Its format is
designed to work with the form library. The free tree is
used to define other object lists. Of course you could
define a structure for a dialog box with it--but you could
also define a dialog box that had a different border and
worked with your own form handler.
Q P_exec has two parameters which the documentation does make
clear. They are the pointer to an environment string and a
pointer to a command tail. What are these strings and how do
I construct them?
A The command tail is an array of strings terminated by a zero.
If you do not use it then point to two consecutive zeros.
The command tail is used by the run application dialog box
for a TTP application. What you type in is inserted in the
command tail. The environment string is something that is
inherited by a process. It is just a simple string.
Q How can I display two dialog boxes at the same time?
A The form library routines are designed for handling only one
dialog box at a time. If you want to simultaneously display
two of them then you will have to write your own form
handler. They can be displayed using the object draw
commands. You may also want to try form_button and
form_keyboard which do not grab control of the screen. Look
for documentation on these functions in this space soon.
Q My menus seem to have so many entries that they are of a
certain size which prevents the AES from restoring what was
under them when they pop back. What are the maximum size
menus that I can have?
A The total width times height in pixels cannot exceed 8k bytes
for hi-res, 4k bytes for medioum res, and 2k bytes for low
res. Assuming an 8 x 8 font or 8 bytes per character, a
maximum for low res might be 256 characters--16 entries of 16
characters each.
Q What is the mechanism by which ST Writer reads the directory
and prints the file names?
A STWriter uses the F_sfirst and F_snext to read the directory
entries. Furthermore, it uses some special data at the
beginning of each file to indicate that it is an STWriter
file.
Q How do I get the command tail from my C program?
A TOS passes your program a count of parameters and a pointer
to the array. Here is an example of how to declare them in
your program:
main(argc,argv)
int argc;
char *argv[];
{
/* your program */
}
Q Are there any variables around so I can get the position of
the cursor?
A Since the original line-a variables offsets were frozen, we
decided to expand the list. At a negative offset from the
line A address there are two variables. v_cur_cx is at -14
words and v_cur_cy is at -13 words.
Q How can I ring a bell without going through the trouble of
do_sound?
A Send a control-G to console output: Bconout(2,7).
Q How do I access the data in an editable field from a dialog
box that was created by the Resource Construction Set?
A When you create the dialog box, use the Name function to give
both the tree and the object a name which you can use later.
Have the RCS create a .h file for your resource and #include
it in your program. Define a pointer of type OBJECT and use
rsc_gaddr with this pointer and the label for your tree to
get the address of the start of the object list for the
dialog. Later, you can index [label of object].ob_spec to
get the pointer to the tedinfo structure. Do one more
indirection to get the pointer to the actual string.