I  am  placing  this on a PD library because it  seems  like  the 
obvious  sort of GEM application and haven't seen anything  quite 
like it.

This  program  is  the  result of a  personal  obsession  and  is 
definitely  not an example of concise and effective code.   I  am 
not a very good programmer. However it is a reasonable idea to be 
able  to design and get good printouts of perspective wire  frame 
models and also to be able to import these into DTP applications.  
I  can provide the code though any half decent programmer  should 
be  able generate better structured,  quicker more  concise  code 
based on published algorithms.

I  have  been using this as test bed to understand  GEM  so  some 
features are just included to see if they work.

It was originally written in BBC Basic on someone else's machine.  
Then  when  I bought an Amstrad PCW I copied into  Mallard  Basic 
using the GSX extension to CP/M+,  it was then re-written into  C 
and compiled by the 8 bit MIX C still using CP/M+ GSX.

Then when I bought an Atari ST before I sold the PCW I ported the 
code over using a null modem cable.   As the GEM VDI is very like 
GSX  it  didn't take a lot of altering the only fiddle  has  been 
using  the AES properly which I still haven't mastered.   I  have 
drawn upon the method in Compute!s ST Applications guide of using 
lots  of  small functions that split up the  various  tasks  into 
understandable  bits.   However  some of the code  they  give  is 
unsound for example: the big function they outline for saving and 
restoring  the window,  when the vro_cpy_frm() function  will  do 
the job quickly and simply.   Tim Oren's Gem Class is packed with 
tips and is on most PD libraries.   K.  Peel's The Concise  Atari 
6800  Programmers  guide  is very good if  a  bit  table  ridden.  
(that's  where I learnt how to detect GDOS with the TRAP #2  call 
with  the 2 byte value -2 on the stack).  It probably contains  a 
few bugs and quite a few useless bits of code I will improve  it, 
I  will  shortly  implement multiple  windows  holding  different 
models and it needs clipping to be implemented in the Z dimension 
when the object is beyond the screen in Perspective mode.

I would like to thank Paul Mazurek at Migraph for explaining  how 
to get GEM files to load into Easydraw2.

The program will work without GDOS but if want to get a  hardcopy 
of your creation I suggest you buy an application that comes with 
it.   So  far I have only found metafile drivers on the MS  Write 
and Easydraw disks.

The program expects the file ASSIGN.SYS to give the number 21  to 
the printer driver file and 31 to the metafile driver file.   The 
supplied ASSIGN.SYS gives a possible setup.   It will work  using 
the Easydraw2 or Timeworks DTP or Fontz or MS Write setups.

I  have  only  got a dot matrix printer so do  not  know  how  my 
solution  to  very big images would affect a laser printer  or  a 
plotter.   Also Lattice C programs by default capture most of the 
memory  and leave only very little for resource files and  device 
drivers (unless I specify a specific heap size).  As I wanted the 
program  to work on any configuration and mindful of  the  Malloc 
bug  I  simply altered the startup module so that  at  least  70K 
bytes is left for the resource file printer drivers, some drivers 
might be more than 50K in size this could cause problems, if they 
will  not  load  define them as 21r in the  assign.sys  file  and 
reboot they will be loaded into memory before the program runs.

  
   

