Path: utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!mailrus!uwmcsd1!nic.MR.NET!eta!pwcs!stag!daemon
From: to_stdnet@stag.UUCP
Newsgroups: comp.sys.atari.st
Subject: (none)
Message-ID: <599@stag.UUCP>
Date: 20 Sep 88 03:29:01 GMT
Sender: daemon@stag.UUCP
Lines: 127

From: roseate!cjp@stag.UUCP (Charles Purcell)

Re: gccGEMshell(long)

What!  Gnu C on the ATARI?  Someone had to be creative for this! Yes,
it is really the Gnu gcc compiler  1.23  for use on the ATARI-ST Mega 
and -ST line of M68000 based microcomputers. I emphasize the chipset
which seems to have made the port possible. Gnu gcc has cost  traffic
for various servers, and a lot of head scratching for installers.This
compiler is big and beneficial. The provided Gnu documentation is re-
quired reading if you are to teach C programming with an ATARI. Even 
more remakable is the port to ATARI! How can one use it on an ST-1040
or 520+  First, the executable is in DRI format, with an extended sym-
bol list,far advanced over DRI's symbol table, but structurally near-
ly identical. Well,the nm68.prg from the developer's kit does read the
symbol table of gcc, and does print out a redirectable output of good 
use in debug mode. As well, sid makes equally good use of this symbol 
table structure. Thus, the table structure is the same, equally limit-
ed by an eight byte name string format. I use ar and nm in gnu format
to read archives and object files for precise details. I would suspect 
that the n.out format of MarkWilliams would be more useful,but illegal.

Please leave the symbol table in the standard DRI executable with the
provision of a choice for no generation, -s . After the code is built, 
I find that an old public domain code   prgstrip.prg   strips off the 
symbol table precisely and accurately.(Anyway Richard has some strong
words with respect to mandatory symbol table generation).

I found the stacklocations, with the help of sid.ttp and environs.ttp
I set cc1   0x05b1c8   to  0x018000    and cpp 0x8fcc   to 0x020000 .
With these stacks and using gemshell(below) in ROM-TOS, I have been
able to compile the 140,00 byte source  cccp.c into a 60 K byte .o

I have eliminated my ramdisk, my print spooler, my corner clock and a
large number of other goodies, just so that I can compile with gcc on
either of my megabyte systems. As a priviledged user of RAM-TOS V.1.4
I can report that it is possible to compile, carefully, even with TOS
in RAM! I can do a better & larger compile using this gemshell that I
was thinking about. Thanks, Simon Poole, for your thoughts about the
utility of gcc, and the importance of usage on  1  megabyte machines.
Otherwise, I was thinking, why not go for a RAM upgrade. At any rate
here is the  gemshell.c  as get up for use in the g: partition.
( compiled using MWC , use with keyclick from GEM window , usage: )
:-v hello.c -o hello.s                   on a hard disk partition
:-v -Ia:\include hello.c -o hello.tos    on either floppy(why dif?)
SOURCE                                   why MWC? because of GEM...


/* gemshell.c   forms gemshell.tos  STdNet-StPaulMN  17Sep88  CJPurcell */
/* "one-liner" shell to compile w/gcc on an ATARI-1040ST or ATARI-520+  */
#include  /* provides maximum available execute space in 1meg */
/* eventually,read this info from an initialization file, i.e., gnu.rc  */
static char *envp[] = { "gcc=g:\\exec\\gcc.ttp",
                        "cc1=g:\\exec\\gcc-cc1.ttp",
                        "cpp=g:\\exec\\gcc-cpp.ttp",
                        "ld=g:\\exec\\gcc-ld.ttp",
                        "as=g:\\exec\\gcc-as.ttp",
                        "GCCEXEC=g:\\exec\\gcc-",
                        "INCLUDE=g:\\include",
                        "GNULIB=g:\\lib",
                        "TEMP=p:",
                        "PATH=",
                        "A:\\",
                        0      };
main()       {
   unsigned char buffer[130];
   int       status;
   buffer[0] = 128;
   Cconws("gccGEMshell Enter:  command_line_string   (^C exits)\r\n:");
   Cconrs(buffer);
   Cconws("\r\n");
   buffer[1] = ' ';   /*   command buffer mandatory space prefix */ 
                      /* 0 selects loadgo                        */
   status = (int) Pexec(  0 , "g:\\exec\\gcc.ttp", &buffer[1], *envp );
   Cconws("\r\n Pause to read compiler messages; Any key continues: \r\n");
   Bconin(2);
   return(status);
}

and a binary useful for partition  g:
BINARY
---------------cut here for uudecode---------------------------
table
 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
begin 644 gemshell.tos
M8!H   .4   !K@    8    P             "IO  0@;0 8T>T '"1M "Q"z
M@")(2A)G4"**)DHD64H:9OPBBDH29SP,&P!!9NP,&P!29N8,&P!'9N ,&P!6y
M9MH,&P ]9@I*$V<&(\L   4:0ID@"2**)DHD64H:9OPBBDH29O(F &8R0ID@x
M"2+\   %/$7M ( 4&DB"0C(@ '(@%!IG%K0!9_A32B+*%!IG"K0!9OA"*O__w
M8.9"F2()T_D   4^(\$   4^+DDK20 $+PTCR   !40O""\ DH#D@5-!/P&3v
MS2\)+PU"9S\\ $I.0=[\  Q">0  !4)*@V8N/SP !#\\  ).N0   =@^@$ZYu
M   ")C]\  (  D)73KD   '8/H!.N0   B983YS.3KD   $HWOP "C\ 3KD t
M  &B/SP 3$Y!3E;_?!U\ (#_?DAY   $E' )/P!.05Q/2&[_?G */P!.05Q/s
M2'D   3,< D_ $Y!7$]P(!U _W\O.0   ZQ(;O]_2'D   3/0F=P2S\ 3D'>r
M_  0/4#_?$AY   $WW )/P!.05Q/< (_ ' "/P!.35A/,"[_?$Y>3G5.5@  q
M3KD   &\/RX "$ZY   !Q%1/3EY.=4Y6  !.7DYU3E8  #\N  AP3#\ 3D%8p
M3TY>3G5.5O_\+P<_+@ (<$4_ $Y!6$\^ &P0, =(P"\ 3KD   -R6$]@(C\No
M  A.N0   GY43SU   AM#C\N  @_!TZY   "UEA/, 3G5.5O_\+P<_n
M+@ (/RX "G)&/P%.05Q//@ P &8H/RX "$ZY   "?E1//4  "&T6/RX "#\Nm
M  I.N0   M983S N  I@#C '2, O $ZY   #0  !1I31VT($!UF^'#_8 H0%6?X,"X "AJ 3-<@@$Y>3G5.5O_Xi
M2-<@@#XN  @P!U9 #$   F)(Y4@P0-'\   #H"!03M J>0  !1H0%4B L$=Gh
M#! 59@1PW6 F4HU@[" -D+D   4:/P!.N0   =A43V .?D-@SGY!8,I^4&#&g
M<-M,UR" 3EY.=4Y6   @+@ (;! @+@ (1( SP   !4)P_V $("X "$Y>3G4 f
M  *D   "J    JP   -D   #8    UP   /<   #\   ! @   0@   $-@  e
M!$P   1A   $=   !((   2*   $D     !G8V,]9SI<97AE8UQG8V,N='1Pd
M &-C,3UG.EQE>&5C7&=C8RUC8S$N='1P &-P<#UG.EQE>&5C7&=C8RUC<' Nc
M='1P &QD/6&5C7&=C8RUA2!C;VYT:6YU97,Z( T*      4>0T-!4#\_/S\_/S\_w
M/S\_/S\_/S\_/S\_/S\_/P        @ !P$0 0H ,    )0#            v
M !@   "6 0  !@                          3"(R!@XD$@@." H,%AH4u
F"A8F"D0.%# 6%"@<,CX*' @P$ 0$! 0$! 0$! 0$! 0$! 0!2  .t
 s
end

electronic mail:                    Charles J.Purcell
woods!cpurcell@eta                  1260 W.Shryer Ave    
roseate!cjp@stag.UUCP               St.Paul, MN 55113            

roseate!cjp@stag.UUCP(Charles Purcell )