source: branches/ali/READSEQ/macinit.c

Last change on this file was 2345, checked in by westram, 21 years ago

additional files that came with READSEQ

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.6 KB
Line 
1/*
2  macinit.c
3  -- Macintosh initializations, then call real main
4
5Note: compile this segment as Main for generic 68000 processor, so it won't
6 fail on generic mac
7
8*/
9
10#pragma segment Main
11
12#include <Types.h>
13#include <stdio.h>
14#include <ctype.h>
15#include <string.h>
16#include <StdLib.h>
17
18#include <Quickdraw.h>
19#include <Memory.h>
20#include <OSUtils.h>
21#include <ToolUtils.h>
22#include <Windows.h>
23#include <Palettes.h>
24#include  <dialogs.h>
25#include  <StandardFile.h>
26#include  <Events.h>
27//#include <Menus.h>
28//#include <Fonts.h>
29
30
31Boolean StopKey()
32{
33EventRecord ev;
34
35  if (EventAvail( keyDownMask+autoKeyMask, &ev)) {
36    if (  (ev.modifiers & cmdKey)
37     && ((char)(ev.message & charCodeMask) == '.') ) {
38        SysBeep(1);
39      (void) GetNextEvent( keyDownMask+autoKeyMask, &ev);
40      return true;
41      }
42    }
43  return false;
44}
45
46Boolean cmdKeyIsDown()
47{ KeyMap  kmap;
48  GetKeys(&kmap);
49  return BitTst(kmap, (sizeof(KeyMap)*8) - 55);
50}
51
52Boolean shiftKeyIsDown()
53{   KeyMap  kmap;
54  GetKeys(&kmap);
55  return BitTst(kmap, (sizeof(KeyMap)*8) - 56);
56}
57
58Boolean capsLockIsDown()
59{ KeyMap  kmap;
60  GetKeys(&kmap);
61  return BitTst(kmap, (sizeof(KeyMap)*8) - 57);
62}
63
64Boolean optionKeyIsDown()
65{ KeyMap  kmap;
66  GetKeys(&kmap);
67  return BitTst(kmap, (sizeof(KeyMap)*8) - 58);
68}
69
70Boolean MouseButton()
71{
72  return Button();
73}
74
75Boolean Keypress()
76{ EventRecord ev;
77  return EventAvail( keyDownMask+keyUpMask+autoKeyMask, &ev);
78}
79
80
81
82char *StdGetFile(
83  char*  prompt,
84  OSType fileTypes[],
85  int    nFileTypes)
86{
87  Point       wher;       /*where to display dialog*/
88  SFReply     reply;      /*reply record*/
89  short       len;
90  static char filename[80] = "\0";
91
92  wher.h = 80;
93  wher.v = 90;
94  if (optionKeyIsDown()) nFileTypes=0;
95
96  SFGetFile(wher, prompt, nil, nFileTypes, fileTypes, nil, &reply);
97
98  if (reply.good) {
99      len = SetVol(nil, reply.vRefNum);
100    len = reply.fName[0];
101    strncpy(filename, (char *)(&reply.fName[1]), len);
102    filename[len]= '\0';
103    return filename;
104    }
105  else
106    return NULL;
107}
108
109
110int readCmdOptions(FILE *cl, char *progname, char ***argv)
111/* command line reader for Mac/MPW  -- dgg */
112{
113#define MAXS  255
114#define addarg(sptr)  if (strlen(sptr)>0) { \
115  targv = (char **) realloc( targv, (argc+1) * sizeof(char *)); \
116  targv[argc] = (char *) malloc(1+strlen(sptr) * sizeof(char)); \
117  strcpy( targv[argc], sptr);  \
118  argc++; }
119
120  char  *pword, st[MAXS];
121  int   argc = 0;
122  char  **targv;
123
124  targv = (char **) malloc(1);
125  if (progname==NULL) progname = "program";
126  addarg( progname);
127  fgets( st, MAXS, cl);
128  if (!feof(cl) && st!=NULL && *st!=0) {
129    pword = strtok( st, "\ \n");
130    while (pword!=NULL) {
131      addarg( pword);
132      pword = strtok( NULL, "\ \n");
133      }
134    }
135
136  *argv = targv;
137  return argc;
138}
139
140int ccommand(char ***argv)
141{
142  int argc;
143  char  **targv;
144
145  argc = readCmdOptions(stdin, *argv[0], &targv);
146  *argv = targv;
147  return argc;
148}
149
150
151
152
153extern _DataInit();
154
155//#define VERSION     curSysEnvVers
156#define nocolorID   130
157#define no68020     133
158#define no68881     132
159#define no256       134
160#define nosys6      135
161
162void MacInit()
163{
164SysEnvRec   theWorld;
165OSErr       OSys;
166DialogPtr   crashDia;
167long        tick;
168
169    UnloadSeg(_DataInit);
170
171    InitGraf((Ptr)&qd.thePort);
172    //InitFonts();
173    InitWindows();
174    //InitMenus();
175    //TEInit();
176    InitDialogs(nil);
177    InitCursor();
178
179/*______________________________________________________*/
180/*            If not right Machine then stop            */
181/*______________________________________________________*/
182  OSys = SysEnvirons( curSysEnvVers,&theWorld);
183
184  /*if(!theWorld.hasColorQD) {
185    crashDia = GetNewDialog (nocolorID, nil, (WindowPtr) -1);
186    DrawDialog (crashDia);
187    Delay (300, &tick);
188    ExitToShell();
189    }*/
190  /*if(theWorld.processor < env68020) {
191    crashDia = GetNewDialog (no68020, nil, (WindowPtr) -1);
192    DrawDialog (crashDia);
193    Delay (300, &tick);
194    ExitToShell();
195    }*/
196  /*if(!theWorld.hasFPU) {
197    crashDia = GetNewDialog (no68881, nil, (WindowPtr) -1);
198    DrawDialog (crashDia);
199    Delay (300, &tick);
200    ExitToShell();
201    }
202  if(theWorld.systemVersion < 0x0600) {
203    crashDia = GetNewDialog (nosys6, nil, (WindowPtr) -1);
204    DrawDialog (crashDia);
205    Delay (300, &tick);
206    ExitToShell();
207    }*/
208
209#ifdef UnDeFineD
210/*______________________________________________________*/
211/*                     Set Rects                        */
212/*______________________________________________________*/
213  screenRect = qd.screenBits.bounds;
214  offLeft = 0;
215  offTop = 0;
216  offRight = screenRect.right;
217  offBottom = screenRect.bottom;
218  SetRect(&BaseRect, 40, 60, 472, 282);
219  tempRgn = GetGrayRgn();
220  HLock ((Handle) tempRgn);
221  TotalRect = (**tempRgn).rgnBBox;
222  SetRect(&minRect, 80, 80, (**tempRgn).rgnBBox.right - 40,
223        (**tempRgn).rgnBBox.bottom - 40);
224  HUnlock ((Handle) tempRgn);
225
226/*______________________________________________________*/
227/*        Open Window & set Palette & Picture           */
228/*______________________________________________________*/
229  theGDevice = GetMainDevice();
230  HLock ((Handle) theGDevice);
231  mycolors = (**(**theGDevice).gdPMap).pmTable;
232  numcolor = (**(**theGDevice).gdPMap).pixelSize;
233  HUnlock((Handle) theGDevice);
234  switch (numcolor) {
235    case 1:
236      numcolor = 2;
237      break;
238    case 2:
239      numcolor = 4;
240      break;
241    case 4:
242      numcolor = 16;
243      break;
244    case 8:
245      numcolor = 256;
246      break;
247    }
248
249  myWindow = NewCWindow(nil, &BaseRect, "", true, zoomDocProc,
250              (WindowPtr) -1, true, 150);
251  SetPort((WindowPtr) myWindow);
252  DrawGrowIcon (myWindow);
253
254  srcPalette = NewPalette (numcolor, mycolors, pmCourteous, 0);
255  SetPalette ((WindowPtr) myWindow, srcPalette, true);
256
257/*______________________________________________________*/
258/*                    Set menus                         */
259/*______________________________________________________*/
260  mymenu0 = GetMenu(appleID);
261  AddResMenu(mymenu0, 'DRVR');
262  InsertMenu(mymenu0,0);
263  mymenu1 = newmenu(129,"File");
264  appendmenu(mymenu1,"Start;Quit");
265  InsertMenu(mymenu1,0);
266  mymenu2 = newmenu(130,"Edit");
267  InsertMenu(mymenu2,0);
268  DrawMenuBar();
269
270/*______________________________________________________*/
271/*                  Init variables                      */
272/*______________________________________________________*/
273  DoneFlag = false;
274  yieldTime = 0;
275  return;
276#endif
277
278}
279
280
281
282
283main(int argc, char *argv[])
284{
285  Boolean loop = true;
286  char **myargv;
287  int   myargc;
288
289  /* MacInit();  -- SIOW library handles this */
290  do {
291    fprintf(stderr,"\nEnter command line for %s [cmd-Q to quit]\n", argv[0]);
292    fprintf(stderr,"-> %s ",argv[0]);
293    myargv = argv;
294    myargc = ccommand(&myargv);
295
296    siow_main(myargc, myargv);
297    fflush(stdout);
298
299    } while (true);
300  exit(0);
301}
302
Note: See TracBrowser for help on using the repository browser.