Wanted: TOS Developer's Kit -> Disk #2

Do you need some hardware and/or software? Do you want to clear out the attic? Post your classified ads here.

Moderators: Mug UK, Adrenalin, Moderator Team

ijor
Hardware Guru
Hardware Guru
Posts: 3397
Joined: Sat May 29, 2004 7:52 pm
Contact:

Re: Wanted: TOS Developer's Kit -> Disk #2

Postby ijor » Sun Dec 18, 2016 3:04 am

This is the second generation DevKit I got directly from Atari, circa end of 1988. Still the same old Alcyon compiler, but some tools were enhanced or updated. Notably there is a brand new and very fast assembler, Madmac.

This was probably the last devkit before the release of the STe. And also probably the last based on the Alcyon and DR tools. Later ones included MWC.
You do not have the required permissions to view the files attached to this post.

tcat
Obsessive compulsive Atari behavior
Obsessive compulsive Atari behavior
Posts: 106
Joined: Fri May 03, 2013 6:00 am

Re: Wanted: TOS Developer's Kit -> Disk #2

Postby tcat » Fri Jan 05, 2018 11:00 am

Hi,

Rather belatedly I have discovered this discussion, as I may also be the orginator of the plea here,
viewtopic.php?f=70&t=25394&p=236581#p236581
I wish to thank you ALL for the effort recovering the DISK_2.
Many thanks again.
Tomas

P.S.
I have corrected STCREATE.C source as I was reconstructing DOODLE.RSC file from the example DOODRSC.C. (STCREATE is documented in `GEM Resource Construction Set')
Not sure if of any value, it was only tested on the example of DOODLE.

Code: Select all

/*   STCREATE.c   04/20/85      ATARI      */
/*   RSCREATE.C   05/18/84 - 11/01/84   LKW      */
/*   Fix something   12/10/84 - 12/10/84   Derek Mui   */
/*   Fix the  size   12/17/84            */
/*   For ST      04/20/85      Derek Mui   */
/*   Pointers fix   09/03/2013      [tcat]      */


#include <define.h>
#include <portab.h>
#include <machine.h>
#include <obdefs.h>
#include <rsrclib.h>

EXTERN WORD   dos_create();
EXTERN WORD   dos_write();
EXTERN VOID   dos_close();


BYTE   *beg_file;

RSHDR starthdr =
{
   0,      /* rsh_vrsn   */
   0,      /* rsh_object   */
   0,       /* rsh_tedinfo   */
   0,      /* rsh_iconblk   */
   0,      /* rsh_bitblk   */
   0,      /* rsh_frstr   */
   0,      /* rsh_string   string data      */
   0,      /* rsh_imdata   image data      */
   0,      /* rsh_frimg   */
   0,      /* rsh_trindex   */
   0,      /* rsh_nobs   */
   0,      /* rsh_ntree   */
   0,      /* rsh_nted   */
   0,      /* rsh_nib   */
   0,      /* rsh_nbb   */
   0,      /* rsh_nstring   */
   0,      /* rsh_nimages   */
   0      /* rsh_rssize   */
};

#include <doodrsc.c>   /* put your include file at here   */

WORD  endfile = 1;

main()
{
   BYTE      *jnk1;
   WORD      handle, ret;
   WORD      size, cnt;         /* in bytes   */   

   starthdr.rsh_vrsn = 0;

   beg_file = &starthdr;
   jnk1 = &rs_object;
   starthdr.rsh_object = (WORD)(jnk1 - beg_file);
   jnk1 = &rs_tedinfo;
   starthdr.rsh_tedinfo = (WORD)(jnk1 - beg_file);
   jnk1 = &rs_iconblk;
   starthdr.rsh_iconblk = (WORD)(jnk1 - beg_file);
   jnk1 = &rs_bitblk;
   starthdr.rsh_bitblk = (WORD)(jnk1 - beg_file);
   jnk1 = &rs_frstr;
   starthdr.rsh_frstr = (WORD)(jnk1 - beg_file);
   jnk1 = &rs_strings[0];
   starthdr.rsh_string = (WORD)(jnk1 - beg_file);
   jnk1 = rs_imdope[0].image;
   starthdr.rsh_imdata = (WORD)(jnk1 - beg_file);
   jnk1 = &rs_frimg;
   starthdr.rsh_frimg = (WORD)(jnk1 - beg_file);
   jnk1 = &rs_trindex;
   starthdr.rsh_trindex = (WORD)(jnk1 - beg_file);

   starthdr.rsh_nobs = NUM_OBS;
   starthdr.rsh_ntree = NUM_TREE;
   starthdr.rsh_nted = NUM_TI;
   starthdr.rsh_nib = NUM_IB;
   starthdr.rsh_nbb = NUM_BB;
   starthdr.rsh_nstring = NUM_FRSTR;
   starthdr.rsh_nimages = NUM_FRIMG;

   fix_trindex();
   fix_objects();
   fix_tedinfo();
   fix_iconblk();
   fix_bitblk();
   fix_frstr();
   fix_frimg();

   /* calculate the real size of the file  */
   /* i.e. include the data string      */


   size = LSTRLEN(rs_strings[NUM_STRINGS - 1]) + 1;
   
   handle = dos_create( ADDR(&pname), F_ATTR);
   cnt =  rs_strings[NUM_STRINGS - 1]  - ((BYTE *)&starthdr) + size;
   starthdr.rsh_rssize = cnt;
   ret = dos_write(handle, cnt, ADDR(&starthdr) );
   dos_close(handle);
}

fix_trindex()
   {
   WORD   test, ii;

   for (ii = 0; ii < NUM_TREE; ii++)
      {
      test = (WORD) rs_trindex[ii];
      rs_trindex[ii] = (BYTE *) &rs_object[test] - beg_file;
      }
   }

fix_objects()
   {
   WORD   test, ii;

   for (ii = 0; ii < NUM_OBS; ii++)
      {
      test = (WORD) rs_object[ii].ob_spec;
      switch (rs_object[ii].ob_type) {
         case G_TITLE:
         case G_STRING:
         case G_BUTTON:
            fix_str(&rs_object[ii].ob_spec);
            break;
         case G_TEXT:
         case G_BOXTEXT:
         case G_FTEXT:
         case G_FBOXTEXT:
            rs_object[ii].ob_spec =
               (BYTE *) &rs_tedinfo[test] - beg_file;
            break;
         case G_ICON:
            rs_object[ii].ob_spec =
               (BYTE *) &rs_iconblk[test] - beg_file;
            break;
         case G_IMAGE:
            rs_object[ii].ob_spec =
               (BYTE *) &rs_bitblk[test] - beg_file;
            break;
         default:
         }
      }
   }

fix_tedinfo()
   {
   WORD   ii;

   for (ii = 0; ii < NUM_TI; ii++)
      {
      fix_str(&rs_tedinfo[ii].te_ptext);
      fix_str(&rs_tedinfo[ii].te_ptmplt);
      fix_str(&rs_tedinfo[ii].te_pvalid);
      }
   }

fix_frstr()
   {
   WORD   ii;

   for (ii = 0; ii < NUM_FRSTR; ii++)
      fix_str(&rs_frstr[ii]);
   }

fix_str(where)
   LONG   *where;
   {
   if (where != NIL)
       *where = (LONG)(rs_strings[(WORD) *where] - (BYTE *)beg_file);
   }

fix_iconblk()
   {
   WORD   ii;

   for (ii = 0; ii < NUM_IB; ii++)
      {
      fix_img(&rs_iconblk[ii].ib_pmask);
      fix_img(&rs_iconblk[ii].ib_pdata);
      fix_str(&rs_iconblk[ii].ib_ptext);
      }
   }

fix_bitblk()
   {
   WORD   ii;

   for (ii = 0; ii < NUM_BB; ii++)
      fix_img(&rs_bitblk[ii].bi_pdata);
   }

fix_frimg()
   {
   WORD   ii;

   for (ii = 0; ii < NUM_FRIMG; ii++)
      fix_bb(&rs_frimg[ii]);
   }

fix_bb(where)
   LONG   *where;
   {
   if (where != NIL)
       *where = (LONG)( (BYTE *) &rs_bitblk[(BYTE) *where] - (BYTE *)beg_file);
   }
   
fix_img(where)
   LONG   *where;
{
   if (where != NIL)
    *where = (LONG)( (BYTE *) rs_imdope[(WORD) *where].image - (BYTE *)beg_file);
}


Social Media

     

Return to “For sale / Wanted”

Who is online

Users browsing this forum: No registered users and 2 guests