[net.micro.atari16] OSS Pascal Development Notes

beatyr@pur-ee.UUCP (Robert Beaty) (03/16/86)

In article <2018@uwmacc.UUCP> you write:
>*** REPLACE THIS LINE WITH YOUR MUSHROOMS ***
>  Well, I don't (yet!) have my ST, but I want to be able to plug it in and
>start programming immediately (1/2 :-), so I'm going to be ordering software
>soon.  Here's a very short summary of what I've seen here so far on the 
>subject of languages:
>
>TDI Modula-2: Exciting, but has a bizarre object file format
>
>OSS Personal Pascal: Great! Impressive! Nifty!
>

  I don't want anyone to get the wrong impression; but I have been in the
process of writing a multi-screen Tek 4010 emulator for the ST in OSS.
Generaly, I am pleased with it but I have a few critical comments of the
language, maybe someone can tell me (us) why these limits exist :

  1) Arrays are limited to occupy less than 32K. Why is this? I thought
     that the 68000 had a continuous address space? I could very well be
     totally off base; but this is a minor problem as I can save the Tek
     screens in different arrays rather than the more elegent scheme of a
     multi-dimensional array.

  2) Procedures ( and I assume functions as well ) are limited to 32K.
     Again, Why? This is a problem for me only when a single large
     procedure makes logical sense, and I have taken to writing in smaller
     chunks to get around this.

  3) You can ( on a 512K machine ) compile up to a limit where the compiler
     generates an error something like 'Stack run into Heap', though it
     is documented in the manual this still puts an upper limit on the size
     of compiled modules to be linked later. This is OSS's suggestion:
     Chop your big program into smaller pieces and then compile seperately
     and link back together. I have personally found this limit on compile
     size to be about 1200 lines.

  4) This is coupled to the previous one - The Linker will only allow you
     to link three user *.o files together. This with the limit above
     sets a limit to the size of program you can write on a 512K TOS on
     disk (standard) machine. This limit I have found to be *about* 3600
     lines. This limit I have hit and now have to put TOS in ROM and get
     a 1Meg upgrade to finish the programming. I don't expect the terminal
     emulator to need more than the standard machine to run; but to get 
     the program developed it takes quite a bit more.

  5) This final item concerns an out and out error in the compiler and/or
     manual. The code is as follows:

       var
         file_name : Path_Name;      { this is the file name I will use }
         Data_File : File of integer;  { This is the file type }
         i : integer;
         ...

       begin
         ...
         file_name:='stuff.dat';
         Reset( Data_File, file_name );    { ready the file for reading }
         read( Data_File, i );        { read an integer }
                        ^
                       'Error in Standard procedure parameter'

     The error is generated by the compiler. The manual shows this as a
     valid use of the procedures, but it will not compile. I have found
     ( also from the manual ) that Get() will do the job; but it is not
     a very 'clean' solution to the problem. The error also occurs when
     you use Rewrite() and write() together.

  In general, for every problem there is a workable solution, but it
would have been nice to not have to fight the compiler/linker to get a
big project through.
  To be fair, I still consider the OSS system to be a good buy, and a good
system to develop in; but I don't want others to get stumped or surprised
by finding what I have found.
  Please don't flame, I am just trying to help out with some lessons I
have found out at the school of hard knocks.

          Bob