ON[-p N ON f /O`! #@%+/13o7;`/C@E`GIKMO/S@UWY]_a c@e`koq su`w{}@` @ `  @ `  O o  @ ` ǀ ɠ O ` ׀ ٠  @ @`/AoOsAuawy{}!Aa!a!A/Aa!Aaǁɡ!A  B b  !"!b!!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'("(B(8 /O`! #@%+/13o7;`/C@E`GIKMO/S@UWY]_a c@e`koq su`w{}@` @ `  @ `  O o  @ ` ǀ ɠ O ` ׀ ٠  @ @`/AoOsAuawy{}!Aa!a!A/Aa!Aaǁɡ!A  B b  !"!b!!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'("(B(8EXAMPLES  F|HEADERS  H}LIB  J}RAMDISK  K}SRC  L}WERCS  N}WTEST  O}WTEST PRG AWRSC H !\WRSC HRD !C 8 8 D#83$ B#0 ! p<0<' $!<## 0   '!8 0pp /O`! #@%+/13o7;`/C@E`GIKMO/S@UWY]_a c@e`koq su`w{}@` @ `  @ `  O o  @ ` ǀ ɠ O ` ׀ ٠  @ @`/AoOsAuawy{}!Aa!a!A/Aa!Aaǁɡ!A  B b  !"!b!!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'("(B(8EXAMPLES  F}HEADERS  H}LIB  J}RAMDISK  K}SRC  L}WERCS  N}WTEST  O}WTEST PRG AWRSC H !\WRSC HRD !\WRSC RSC !\TLC5DISK3  8LESSONS  `AESPATH  Ii NSTALL PRG t3sOHN SCR G /O`! #@%+/13o7;`/C@E`GIKMO/S@UWY]_a c@e`koq su`w{}@` @ `  @ `  O o  @ ` ǀ ɠ O ` ׀ ٠  @ @`/AoOsAuawy{}!Aa!a!A/Aa!Aaǁɡ!A  B b  !"!b!!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'("(B(8EXAMPLES  F|HEADERS  H}LIB  J}RAMDIS  K|SRC  L}WERCS  N}WTEST  O|WTEST PRG AWRSC H !\WRSC HRD !\WRSC RSC !\TLC5DISK3  8LESSONS  `AESPATH  Ii NSTALL PRG t3sOHN SCR G /O`! #@%+/13o7;`/C@E`GIKMO/S@UWY]_a c@e`koq su`w{}@` @ `  @ `  O o  @ ` ǀ ɠ O ` ׀ ٠  @ @`/AoOsAuawy{}!Aa!a!A/Aa!Aaǁɡ!A  B b  !"!b!!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'("(B(8EXAMPLES  F}HEADERS  H}LIB  J}RAMDISK  K}SRC  L}WERCS  N}WTEST  O}WTEST PRG AWRSC H !\WRSC HRD !\WRSC RSC !\TLC5DISK3  8LESSONS  `AESPATH  Ii NSTALL PRG t3sOHN SCR G .  G}.. BLIT C uS CHDIRACCC o= FLOPFMT C uS LAF C uS POLY C vSPRT C vSxROCP C < TEXT C wSsGSTLIB C UvTESTAUT C y/HANOI C !+ b.  I}.. AES H Z2ASSERT H /e=&rBASEPAGEH zM'iCONIO H h(CTYPE H G|8)DIRENT H ҂,DOS H 3 -ERRNO H H|82ERROR H h%4XFCNTL H |5R FCTYPE H YdU8,FLOAT H b]9bGEMEXTRAH %<GEMLIB H Qi=IOS1 H "f>:LIMITS H H|8?LINEA H UeA=LOCALE H tQDM68881 H jUVMATH H X NONDP H V\[OSBIND H u\/OSERR H bUg3PORTAB H Hw}hSETJMP H Zi)SIGNAL H L|8jSTDARG H M|8lTSTDDEF H smISTDIO H |nSTDLIB H tSt3.  J}.. HC LIB =HC LNK 0j.  K}.. HRAM150KPRG 6RAMINST RSC :d0 HRAMDSK PRG 6RAMDSK PRG jRAMINST PRG \B".  M}.. _ASSERT C e3dC S 4_SETARGVC oM _MAIN C H6/_STUB C ~T_XCOVF C ~VBASEPAGEI e<sGEMDOS I f<SYSVAR I f<CXFERR C -gCXFPE C ɢg/MATHERR C t3OSERR C N*2SYSERR C 3 .  N}.. WCONVERTPRG 0ZKWCONVERTTTP 0gKWERCS INF - WERCS LNG pYCWERCS RSC `]WERCS PRG $WIMAGE PRG ]SrqWIMAGE RSC }".  P}.. WTEST BAS }WTEST MOD }WTEST PAS ~-WTEST S ~!WRSC MOD Ј/RSC HRD !\RSC RSC !\TTEST PRG A/* * Demonstrate the Line-A blit routines * * lc -L blit.c * * Copyright (c) 1990 HiSoft */ #include #include #include #include #include int main(void) { LA_BLIT blt; linea0(); blt.bb_b_wd=V_X_MAX/2-1; blt.bb_b_ht=V_Y_MAX/2-1; blt.bb_plane_ct=VPLANES; blt.bb_fg_col=1; blt.bb_bg_col=1; memset(blt.bb_op_tab,S_OR_D,sizeof(blt.bb_op_tab)); blt.bb_s.bl_xmin=blt.bb_s.bl_ymin=0; blt.bb_s.bl_form=blt.bb_d.bl_form=Logbase(); blt.bb_s.bl_nxwd=blt.bb_d.bl_nxwd=1< #include #include #include int main(void) { char select[FNSIZE]; char dirname[FMSIZE]; short msg[8]; int id; short button; id=appl_init(); #ifndef NOT_A_DA menu_register(id," Change Directory "); /* register as a DA */ #endif /* * now wait for it to be selected from desk accessories * each select is once around loop */ for (;;) { #ifndef NOT_A_DA evnt_mesag(msg); /* wait for an event */ if (msg[0]==AC_OPEN) { #endif getcd(0,dirname); strcat(dirname,"\\"); *select=0; wind_update(BEG_MCTRL); /* prevent button fall through */ /* call fsel_exinput, always safe in Lattice 5 */ fsel_exinput(dirname,select,&button,"Change Directory"); wind_update(END_MCTRL); /* give back the mouse */ if (button) { char *s;  s=strrchr(dirname,'\\'); if (s) s[1]='\0'; chdir(dirname); } #ifdef NOT_A_DA else break; #else } #endif } #ifdef NOT_A_DA appl_exit(); return 0; #endif } /* * Format a single-sided floppy with n-sector skewing * * lc -L flopfmt.c * * Copyright (c) 1990 HiSoft */ #include #include #include int main(void) { static char buf[8192]; int trk; short skew[]={2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9}; int n=2; for (trk=0; trk<80; trk++) { printf("\rFormatting track %02d",trk); if (Flopfmt(buf,&skew[8-(trk*n%9)],0,9,trk,0,-1,0x87654321,0xe5e5)) printf("\nError on track %02d\n",trk); } memset(buf,0,9*512); Flopwr(buf,0L,0,1,0,0,9); Flopwr(buf,0L,0,1,1,0,9); Protobt(buf,0x010L,2,0); Flopwr(buf,0L,0,1,0,0,1); } u/* * Demonstrate the Line-A seed fill routine, using right mouse button * to abort * * lc -Lg -v laf.c * * Copyright (c) 1990 HiSoft */ #include #include #include short __saveds sab(void) { return V_MOUSE_BT; /* stop when a button pressed */ } main() { short v_handle,junk; short pattern[]= { 0x0940, /* %0 1001 0100 0 */ 0x0f40, /* %0 1 0100 0 */ 0x0940, /* %0 1001 0100 0 */ 0x64dc, /* %0110 0100 1101 1100 */ 0x8a88, /* %1000 1010 1000 1000 */ 0xcac8, /* %1100 1010 1100 1000 */ 0x2a88, /* %0010 1010 1000 1000 */ 0xa488, /* %1100 0100 1000 1000 */ }; appl_init(); v_handle=graf_handle(&junk,&junk,&junk,&junk); linea0(); hidemouse(); vs_clip(v_handle,0,NULL); vswr_mode(v_handle,MD_REPLACE); vsf_color(v_handle,BLACK); vsf_interior(v_handle,FIS_HOLLOW); vsf_perimeter(v_handle,1); v_circle(v_handle,V_X_MAX/2,V_Y_MAX/2,V_Y_MAX/2); vsf_color(v_handle,BLACK); PTSIN[0]=V_X_MAX/2; PTSIN[1]=V_Y_MAX/2; INTIN[0]=-1; XMINCL=0; YMINCL=0; XMAXCL=V_X_MAX; YMAXCL=V_Y_MAX; SEEDABORT=sab; WMODE=MD_REPLACE; PATPTR=pattern; PATMSK=sizeof(pattern)/sizeof(short)-1; MFILL=0; lineaf(); showmouse(1); appl_exit(); } /* * Demonstrate the Line-A polygon primitive * * lc -L poly.c * * Copyright (c) 1990 HiSoft */ #include int main(void) { short pts[]={160,100,0,50,80,199,319,199,319,50,160,100}; short contrl[2]; short pattern[]= { 0x0940, /* %0 1001 0100 0 */ 0x0940, /* %0 1001 0100 0 */ 0x0f40, /* %0 1 0100 0 */ 0x0940, /* %0 1001 0100 0 */ 0x0940, /* %0 1001 0100 0 */ 0x0, /* %0 0 0 0 */ 0x64dc, /* %0110 0100 5 1101 1100 */ 0x8a88, /* %1000 1010 1000 1000 */ 0xcac8, /* %1100 1010 1100 1000 */ 0x2a88, /* %0010 1010 1000 1000 */ 0xa488, /* %1100 0100 1000 1000 */ 0x0, /* %0 0 0 0 */ 0x0, /* %0 0 0 0 */ 0x0, /* %0 0 0 0 */ 0x0, /* %0 0 0 0 */ 0x0, /* %0 0 0 0 */ }; register int i; linea0(); PTSIN=&pts; CONTRL=&contrl; contrl[1]=sizeof(pts)/(sizeof(short)*2)-1; COLBIT0=1; COLBIT1=1; COLBIT2=1; COLBIT3=1; WMODE=0; PATPTR=&pattern; PATMSK=sizeof(pattern)/sizeof(short)-1; MFILL=0; CLIP=0; Y1=0; for (i=0; i<200; i++) { Y1++; linea6(); } } K/* * Emulate the Scrdmp() comnmand * * lc -L prt.c * * Copyright (c) 1990 HiSoft */ #include #include #include enum {MONO_ATARI, COLOUR_ATARI, DAISY, EPSON}; #define _prt_cnt 0x4ee int lock(void) { *(short *)_prt_cnt=1; /* lock out ALT-Help handler */ } int main(void) { static struct { char *blkptr; unsigned short offset; unsigned short width; unsigned short height; unsigned short left; unsigned short right; unsigned short srcres; unsigned short dstres; unsigned short *colpal; unsigned short type; unsigned short port; char *masks; } prt; short palette[16]; short conf=Setprt(-1); register int i; prt.blkptr=Physbase(); /* dump the physical screen */ if (conf&1) abort(); /* can't handle daisywheels */ else if (conf&4) prt.type=EPSON; else if (conf&2) prt.type=COLOUR_ATARI; else prt.type=MONO_ATARI; for (i=16; i--; ) palette[i]=Setcolor(i,-1); prt.colpal=palette; /* get palette */ prt.port=(conf&16)>>4; /* port */ prt.srcres=Getrez(); /* screen resolution */ prt.dstres=(conf&8)>>3; /* printer resolution */ linea0(); /* init Line-A for _MAX */ prt.width=V_X_MAX; /* find screen width */ prt.height=V_Y_MAX; /* and height */ Supexec(lock); /* lock out ALT-Help */ return Prtblk(&prt); /* and dump */ } /* * rocp - fully configure the machine after the style of the control panel * * Started 1/3/89 Alex G. Kiernan * * Compile using: * * lc -v -w -csfm -O -Lavg rocp * * Copyright (c) 1990 HiSoft */ #include #include #include #include #include enum {EVD_GET,EVD_SET}; void rocp(const char *p) { char *q; if (q=strstr(p,"#a")) /* find start of rs232 info */ { int flowctl, parity, bits; char speed; unsigned long rsstat; union { struct { unsigned u_d:1; unsigned u_l:2; unsigned u_as:2; unsigned u_pe:1; unsigned u_po:1; unsigned :1; } b; short w; } ucr; /* We ignore the duplex and strip bits since these are the preserve of the VT52 emulator */ sscanf(q,"#a%*1d%c%1d%1d%1d%*1d", &speed, &parity, &bits, &flowctl); speed-='0'; /* adjust speed to give 0..15 */ rsstat=Rsconf(speed,flowctl,-1,-1,-1,-1); ucr.w=(rsstat >> 24); /* fetch ucr value */ ucr.b.u_l=bits; if (parity) { ucr.b.u_po=parity-2; ucr.b.u_pe=1; } else ucr.b.u_pe=0; Rsconf(-1,-1,ucr.w,-1,-1,-1); } if (q=strstr(p,"#b")) /* find start of printer info */ { int type, colour, density, quality, port, paper; sscanf(q,"#b%1d%1d%1d%1d%1d%1d", &type, &colour, &density, &quality, &port, &paper); /* Expand the bits into the right place in the word */ Setprt( paper)<<1)| port)<<1) | quality)<<1) | density)<<1) | colour)<<1) | type)); } if (q=strstr(p,"#c")) /* find start of workstation info */ { int dblclick, click, bell, delay, speed; short col[16]; unsigned char oldconterm; volatile unsigned char *conterm=0x484; void *save_ssp; /* col[] info is fetched in a funny order to allow for the way the VDI maps logical to physical colours */ sscanf(q,"#c" "%3hx%3hx%3hx%3hx%3hx%3hx%3hx%3hx%3hx%3hx%3hx%3hx%3hx%3hx%3hx%3hx" "%1d%1d%1d%2d%2d", &col[0],&col[15],&col[1],&col[2], &col[4],&col[6],&col[3],&col[5], &col[7],&col[8],&col[9],&col[10], &col[12],&col[14],&col[11],&col[13], &dblclick, &click, &bell, &delay, &speed); switch (Getrez()) /* fudge for different resolutions */ { case 1: /* med res */ col[3]=col[15]; break; case 2: /* hi res */ col[1]=col[15]; break; } Setpallete(col); Vsync(); /* ensure palette set before stack is reused */ Kbrate(delay,speed); evnt_dclick(dblclick,EVD_SET); save_ssp=Super(NULL); oldconterm=(*conterm)&~0x05; if (click) oldconterm|=0x01; if (bell) oldconterm|=0x04; *conterm=oldconterm; Super(save_ssp); } } int main(void) { char *p,*q; int result=EXIT_FAILURE; int size=256; if (appl_init()!=-1) { while (result!=EXIT_SUCCESS) { int cnt; if ((size<<=1)<0) /* double memory allocation */ break; /* shell info >32K */ if (!(p=malloc(size))) /* get some memory */ break; /* failed so give up */ shel_get(p,size); /* fetch shell information */ for (q=p, cnt=size; cnt--; ) /* find terminator */ if (*q++=='\x1a') /* found the CTRL Z */ { *--q='\0'; /* replace with a NUL */ rocp(p); /* setup desktop */ result=EXIT_SUCCESS; break; } free(p); /* release memory */ } appl_exit(); } return result; } J/* * Demonstrate the Line-A text routines * * lc -L text.c * * Copyright (c) 1990 HiSoft */ #include #include int main(void) { register int i; linea0(); for (i=0; i<0x20; i++) { register const char *s="Hello World"; register char c; if (i>=0x10) DSTX=V_X_MAX/2; else DSTX=0; while (c=*s++) { short x[500]; TEXTFG=1; TEXTBG=0; STYLE=i; c-=V_DEF_FONT->font_low_ade; SRCX=V_DEF_FONT->font_char_off[c]; SRCY=0; DELX=V_DEF_FONT->font_char_off[c+1]-SRCX; DELY=V_DEF_FONT->font_height; FBASE=V_DEF_FONT->font_data; FWIDTH=V_DEF_FONT->font_width; LITEMSK=V_DEF_FONT->font_lightening; SKEWMSK=V_DEF_FONT->font_skewing; WEIGHT=V_DEF_FONT->font_thickening; if (STYLE & 1<<2) /* skewed */ { ROFF=V_DEF_FONT->font_right_off; LOFF=V_DEF_FONT->font_left_off; } else ROFF=LOFF=0; SCALE=0; XDDA=0x8000; DDAINC=256; SCALDIR=0; CHUP=0; MONO=0; SCRTCHP=x; SCRPT2=sizeof(x)/2; CLIP=0; DSTY=(i&0xf)*V_DEF_FONT->font_height; linea8(); } } } /* * aes.h - AES interface header file * * Started 16/9/89 Alex G. Kiernan * * Copyright (c) 1989 HiSoft */ #ifndef _AES_H #define _AES_H __regargs int _AESif(short); extern void *_AESpb[6]; extern short _AEScontrol[5]; extern short _AESglobal[15]; extern short _AESintin[16]; extern short _AESintout[7]; extern void *_AESaddrin[3]; extern void *_AESaddrout[1]; /* Application library definitions */ typedef struct { long ap_event; long ap_value; } EVNTREC; int appl_init(void); #ifndef __NO_AES_DEFINES #define appl_init() (_AESpb[0]=_AEScontrol,_AESpb[1]=_AESglobal,\ _AESpb[2]=_AESintin,_AESpb[3]=_AESintout,_AESpb[4]=_AESaddrin,\ _AESpb[5]=_AESaddrout,_AESif(0)) #endif int appl_read(int,int,void *); int appl_write(int,int,void *); int appl_find(const char *); #ifndef __NO_AES_DEFINES #define appl_find(a) (_AESaddrin[0]=a,_AESif(12)) #endif int appl_tplay(EVNTREC *,int,int); int appl_trecord(EVNTREC *,int); int appl_exit(void); #ifndef __NO_AES_DEFINES #define appl_exit() _AESif(36) #endif /* Event library definitions */ #define MU_KEYBD 0x0001 #define MU_BUTTON 0x0002 #define MU_M1 0x0004 #define MU_M2 0x0008 #define MU_MESAG 0x0010 #define MU_TIMER 0x0020 #define K_RSHIFT 0x0001 #define K_LSHIFT 0x0002 #define K_CTRL 0x0004 #define K_ALT 0x0008 #define MN_SELECTED 10 #define WM_REDRAW 20 #define WM_TOPPED 21 #define WM_CLOSED 22 #define WM_FULLED 23 #define WM_ARROWED 24 #define WM_HSLID 25 #define WM_VSLID 26 #define WM_SIZED 27 #define WM_MOVED 28 #define WM_NEWTOP 29 #define AC_OPEN 40 #define AC_CLOSE 41 #define WA_UPPAGE 0 #define WA_DNPAGE 1 #define WA_UPLINE 2 #define WA_DNLINE 3 #define WA_LFPAGE 4 #define WA_RTPAGE 5 #define WA_LFLINE 6 #define WA_RTLINE 7 int evnt_keybd(void); #ifndef __NO_AES_DEFINES #define evnt_keybd() _AESif(40) #endif int evnt_button(int,int,int,short *,short *,short *,short *); int evnt_mouse(int,int,int,int,int,short *,short *,short *,short *); int evnt_mesag(short *); #ifndef __NO_AES_DEFINES #define evnt_mesag(a) (_AESaddrin[0]=a,_AESif(52)) #endif int evnt_timer(int,int); int evnt_multi(int,int,int,int,int,int,int,int,int,int,int,int,int,int,short *,int,int,short *,short *,short *,short *,short *,short *); int evnt_dclick(int,int); /* Object library definitions */ #define ROOT 0 #define NIL -1 #define MAX_DEPTH 8 /* max depth of search or draw */  #define IP_HOLLOW 0 /* inside patterns */ #define IP_1PATT 1 #define IP_2PATT 2 #define IP_3PATT 3 #define IP_4PATT 4 #define IP_5PATT 5 #define IP_6PATT 6 #define IP_SOLID 7  #define IBM 3 /* font types */ #define SMALL 5  #define G_BOX 20 /* Graphic types of obs */ #define G_TEXT 21 #define G_BOXTEXT 22 #define G_IMAGE 23 #define G_PROGDEF 24 #define G_USERDEF G_PROGDEF #define G_IBOX 25 #define G_BUTTON 26 #define G_BOXCHAR 27 #define G_STRING 28 #define G_FTEXT 29 #define G_FBOXTEXT 30 #define G_ICON 31 #define G_TITLE 32  #define NONE 0x0 /* Object flags */ #define SELECTABLE 0x0001 #define DEFAULT 0x0002 #define EXIT 0x0004 #define EDITABLE 0x0008 #define RBUTTON 0x0010 #define LASTOB 0x0020 #define TOUCHEXIT 0x0040 #define HIDETREE 0x0080 #define INDIRECT 0x0100 #define NORMAL 0x0 /* Object states */ #define SELECTED 0x0001 #define CROSSED 0x0002 #define CHECKED 0x0004 #define DISABLED 0x0008 #define OUTLINED 0x0010 #define SHADOWED 0x0020  #define WHITE 0 /* Object colors */ #define BLACK 1 #define RED 2 #define GREEN 3 #define BLUE 4 #define CYAN 5 #define YELLOW 6 #define MAGENTA 7 #define LWHITE 8 #define LBLACK 9 #define LRED 10 #define LGREEN 11 #define LBLUE 12 #define LCYAN 13 #define LYELLOW 14 #define LMAGENTA 15  #define TE_LEFT 0 /* editable text justification */ #define TE_RIGHT 1 #define TE_CNTR 2 typedef struct object { short ob_next; short ob_head; short ob_tail; unsigned short ob_type; unsigned short ob_flags; unsigned short ob_state; void *ob_spec; short ob_x; short ob_y; short ob_width; short ob_height; } OBJECT; typedef struct text_edinfo { char *te_ptext; char *te_ptmplt; char *te_pvalid; short te_font; short te_junk1; short te_just; short te_color; short te_junk2; short te_thickness; short te_txtlen; short te_tmplen; } TEDINFO; typedef struct icon_block { short *ib_pmask; short *ib_pdata; char *ib_ptext; short ib_char; short ib_xchar; short ib_ychar; short ib_xicon; short ib_yicon; short ib_wicon; short ib_hicon; short ib_xtext; short ib_ytext; short ib_wtext; short ib_htext; } ICONBLK; typedef struct bit_block { short *bi_pdata; short bi_wb; short bi_hl; short bi_x; short bi_y; short bi_color; } BITBLK; typedef struct parm_blk { OBJECT *pb_tree; short pb_obj; short pb_prevstate; short pb_currstate; short pb_x; short pb_y; short pb_w; short pb_h; short pb_xc; short pb_yc; short pb_wc; short pb_hc; long pb_parm; } PARMBLK; /* Lattice 3 flavour */ typedef struct user_blk { int (*ub_code)(PARMBLK *); long ub_parm; } USERBLK; /* Rest of the world flavour */ typedef struct appl_blk { int (*ab_code)(PARMBLK *); long ab_parm; } APPLBLK; typedef struct grect { short g_x; short g_y; short g_w; short g_h; } GRECT; int objc_add(OBJECT *,int,int); int objc_delete(OBJECT *,int); int objc_draw(OBJECT *,int,int,int,int,int,int); int objc_find(OBJECT *,int,int,int,int); int objc_offset(OBJECT *,int,short *,short *); int objc_order(OBJECT *,int,int); int objc_edit(OBJECT *,int,int,short *,int); int objc_change(OBJECT *,int,int,int,int,int,int,int,int); /* HiSoft extras */ int objc_xywh(OBJECT *,int,GRECT *); void objc_walk(OBJECT *,int,int,int,int (*)(OBJECT *,int)); /* Menu library definitions */ int menu_bar(OBJECT *, int); int menu_icheck(OBJECT *,int,int); int menu_ienable(OBJECT *,int,int); int menu_tnormal(OBJECT *,int,int); int menu_text(OBJECT *,int,const char *); int menu_register(int,const char *); /* Form library definitions */ #define ED_START 0 /* editable text field definitions */ #define EDSTART ED_START #define ED_INIT 1 #define EDINIT ED_INIT #define ED_CHAR 2 #define EDCHAR ED_CHAR #define ED_END 3 #define EDEND ED_END  #define FMD_START 0 #define FMD_GROW 1 #define FMD_SHRINK 2 #define FMD_FINISH 3 int form_do(OBJECT *,int); int form_dial(int,int,int,int,int,int,int,int,int); int form_alert(int,const char *); int form_error(int); #ifndef __NO_AES_DEFINES #define form_error(a) (_AESintin[0]=a,_AESif(172)) #endif int form_center(OBJECT *,short *,short *,short *,short *); int form_keybd(OBJECT *,int,int,int,short *,short *); int form_button(OBJECT *,int,int,short *); /* Graphics library definitions */ #define ARROW 0 #define TEXT_CRSR 1 #define HOURGLASS 2 #define BUSYBEE HOURGLASS #define POINT_HAND 3 #define FLAT_HAND 4 #define THIN_CROSS 5 #define THICK_CROSS 6 #define OUTLN_CROSS 7 #define USER_DEF 255 #define M_OFF 256 #define M_ON 257 int graf_rubberbox(int,int,int,int,short *,short *); int graf_dragbox(int,int,int,int,int,int,int,int,short *,short *); int graf_movebox(int,int,int,int,int,int); int graf_growbox(int,int,int,int,int,int,int,int); int graf_shrinkbox(int,int,int,int,int,int,int,int); int graf_watchbox(OBJECT *,int,int,int); int graf_slidebox(OBJECT *,int,int,int); int graf_handle(short *,short *,short *,short *); int graf_mouse(int,void *); int graf_mkstate(short *,short *,short *,short *); /* Scrap library definitions */ int scrp_read(char *); int scrp_write(const char *); #ifndef __NO_AES_DEFINES #define scrp_read(a) (_AESaddrin[0]=a,_AESif(280)) #define scrp_write(a) (_AESaddrin[0]=a,_AESif(284)) #endif /* File selector library definitions */ int fsel_input(char *,char *,short *); int fsel_exinput(char *,char *,short *,const char *); /* Window library definitions */ #define NAME 0x0001 #define CLOSE 0x0002 #define CLOSER CLOSE #define FULL 0x0004 #define FULLER FULL #define MOVE 0x0008 #define MOVER MOVE #define INFO 0x0010 #define SIZE 0x0020 #define SIZER SIZE #define UPARROW 0x0040 #define DNARROW 0x0080 #define VSLIDE 0x0100 #define LFARROW 0x0200 #define RTARROW 0x0400 #define HSLIDE 0x0800 #define WF_KIND 1 #define WF_NAME 2 #define WF_INFO 3 #define WF_WXYWH 4 #define WF_WORKXYWH WF_WXYWH #define WF_CXYWH 5 #define WF_CURRXYWH WF_CXYWH #define WF_PXYWH 6 #define WF_PREVXYWH WF_PXYWH #define WF_FXYWH 7 #define WF_FULLXYWH WF_FXYWH #define WF_HSLIDE 8 #define WF_VSLIDE 9 #define WF_TOP 10 #define WF_FIRSTXYWH 11 #define WF_NEXTXYWH 12 #define WF_IGNORE 13 #define WF_NEWDESK 14 #define WF_HSLSIZE 15 #define WF_HSLSIZ WF_HSLSIZE #define WF_VSLSIZE 16 #define WF_VSLSIZ WF_VSLSIZE #define WF_SCREEN 17 #define END_UPDATE 0 #define BEG_UPDATE 1 #define END_MCTRL 2 #define BEG_MCTRL 3 #define WC_BORDER 0 #define WC_WORK 1 #define DESK 0 int wind_create(int,int,int,int,int); int wind_open(int,int,int,int,int); int wind_close(int); int wind_delete(int); #ifndef __NO_AES_DEFINES #define wind_close(a) (_AESintin[0]=a,_AESif(368)) #define wind_delete(a) (_AESintin[0]=a,_AESif(372)) #endif int wind_get(int,int,short *,short *,short *,short *); int wind_set(int,int,...); int wind_find(int,int); int wind_update(int); #ifndef __NO_AES_DEFINES #define wind_update(a) (_AESintin[0]=a,_AESif(388)) #endif int wind_calc(int,int,int,int,int,int,short *,short *,short *,short *); int wind_new(void); #ifndef __NO_AES_DEFINES #define wind_new() _AESif(396) #endif /* HiSoft extras */ int wind_newdesk(OBJECT *,int); int wind_info(int,const char *); int wind_title(int,const char *); int wind_redraw(int,GRECT *,int (*)(int,GRECT *)); /* Resource library definitions */ #define R_TREE 0 #define R_OBJECT 1 #define R_TEDINFO 2 #define R_ICONBLK 3 #define R_BITBLK 4 #define R_STRING 5 /* gets pointer to free strings */ #define R_IMAGEDATA 6 /* gets pointer to free images */ #define R_OBSPEC 7 #define R_TEPTEXT 8 /* sub ptrs in TEDINFO */ #define R_TEPTMPLT 9 #define R_TEPVALID 10 #define R_IBPMASK 11 /* sub ptrs in ICONBLK */ #define R_IBPDATA 12 #define R_IBPTEXT 13 #define R_BIPDATA 14 /* sub ptrs in BITBLK */ #define R_FRSTR 15 /* gets addr of ptr to free strings */ #define R_FRIMG 16 /* gets addr of ptr to free images */ typedef struct { short rsh_vrsn; /* RCS version no. */ unsigned short rsh_object; /* offset to object[] */ unsigned short rsh_tedinfo; /* offset to tedinfo[] */ unsigned short rsh_iconblk; /* offset to iconblk[] */ unsigned short rsh_bitblk; /* offset to bitblk[] */ unsigned short rsh_frstr; /* offset to free string index */ unsigned short rsh_string; /* offset to first string */ unsigned short rsh_imdata; /* offset to image data */ unsigned short rsh_frimg; /* offset to free image index */ unsigned short rsh_trindex; /* offset to object tree index */ short rsh_nobs; /* number of objects */ short rsh_ntree; /* number of trees */ short rsh_nted; /* number of tedinfos */ short rsh_nib; /* number of icon blocks */ short rsh_nbb; /* number of blt blocks */ short rsh_nstring; /* number of free strings */ short rsh_nimages; /* number of free images */ unsigned short rsh_rssize; /* total bytes in resource */ } RSHDR; int rsrc_load(const char *); int rsrc_free(void); #ifndef __NO_AES_DEFINES #define rsrc_load(a) (_AESaddrin[0]=a,_AESif(400)) #define rsrc_free() _AESif(404) #endif int rsrc_gaddr(int,int,void *); int rsrc_saddr(int,int,void *); int rsrc_obfix(OBJECT *,int); /* Shell library definitions */ int shel_read(char *,char *); int shel_write(int,int,int,const char *,const char *); int shel_get(char *,int); int shel_put(const char *,int); int shel_find(char *); #ifndef __NO_AES_DEFINES #define shel_find(a) (_AESaddrin[0]=a,_AESif(456)) #endif int shel_envrn(char *, const char *); /* Rectangle manipulation definitions */ void rc_constrain(const GRECT *,GRECT *); void rc_copy(const GRECT *,GRECT *); int rc_equal(const GRECT *,const GRECT *); int rc_intersect(const GRECT *,GRECT *); int rc_inside(int,int,const GRECT *); void rc_union(const GRECT *,GRECT *); /* Macro for Lattice 3 compatability */ #ifdef SPTR #define ADDR(a) (a) #else #define ADDR(a) ((long)(a)>>16),((long)(a)) #endif /* Useful AES functions */ #ifndef min int min(int,int); int __builtin_min(int,int); #define min(a,b) __builtin_min(a,b) #endif #ifndef max int max(int,int); int __builtin_max(int,int); #define max(a,b) __builtin_max(a,b) #endif unsigned short umul_div(unsigned short,unsigned short,unsigned short); #define NULL ((void *)0) #endif g /* * assert.h - define macros and prototypes for assertion validation * * Started 5/9/89 Alex G. Kiernan * * Copyright (c) 1990 HiSoft */ #ifdef assert #undef assert #else void __assert(const char *, const char *, int); #endif #ifndef NDEBUG #define assert(x) (x?(void)0:_assert(#x,__FILE__,__LINE__)) #else #define assert(x) ((void)0) #endif GS void _assert(); #else void _assert(char *, char *, int); #endif #define NULL ((void *)0) #endif "/* * basepage.h - GEMDOS base page structure * * Started 12/2/90 Alex G. Kiernan * * Copyright (c) 1989 HiSoft */ #ifndef _BASEPAGE_H #define _BASEPAGE_H typedef struct _base { void *p_lowtpa; /* pointer to bottom of TPA */ void *p_hitpa; /* pointer to top of TPA + 1 */ void *p_tbase; /* base of text segment */ long p_tlen; /* length of text segment */ void *p_dbase; /* base of data segment */ long p_dlen; /* length of data segment */ void *p_bbase; /* base of BSS segment */ long p_blen; /* length of BSS segment */ void *p_dta; /* pointer to current DTA */ struct _base *p_parent; /* pointer to parent's basepage */ void *p_reserved; char *p_env; /* pointer to environment strings */ long p_undef[20]; char p_cmdlin[128]; /* command line image */ } BASEPAGE; extern BASEPAGE *_pbase; #endif /* * conio.h - console I/O declarations * * Started 7/12/89 Alex G. Kiernan * * Copyright (c) 1989 HiSoft */ #ifndef _CONIO_H #define _CONIO_H int cget(void); int cgetc(void); char *cgets(char *); int cputc(int); int cputs(const char *); int cprintf(const char *, ...); int cscanf(const char *, ...); int getch(void); int getche(void); int kbhit(void); int putch(int); int ungetch(int); #endif V/* * ctype.h - character typing macros * * Started 5/9/89 Alex G. Kiernan, based on Lattice source * * Copyright (c) 1989 HiSoft and Lattice, Inc. */ #ifndef _CTYPE_H #define _CTYPE_H #include /* * * This header file defines various ASCII character manipulation macros, * as follows: * * isalpha(c) non-zero if c is alpha * isupper(c) non-zero if c is upper case * islower(c) non-zero if c is lower case * isdigit(c) non-zero if c is a digit (0 to 9) * isxdigit(c) non-zero if c is a hexadecimal digit (0 to 9, A to F, * a to f) * isspace(c) non-zero if c is white space * ispunct(c) non-zero if c is punctuation * isalnum(c) non-zero if c is alpha or digit * isprint(c) non-zero if c is printable (including blank) * isgraph(c) non-zero if c is graphic (excluding blank) * iscntrl(c) non-zero if c is control character * isascii(c) non-zero if c is ASCII * iscsym(c) non-zero if valid character for C symbols * iscsymf(c) non-zero if valid first character for C symbols * */ #define _U 1 /* upper case flag */ #define _L 2 /* lower case flag */ #define _N 4 /* number flag */ #define _S 8 /* space flag */ #define _P 16 /* punctuation flag */ #define _C 32 /* control character flag */ #define _B 64 /* blank flag */ #define _X 128 /* hexadecimal flag */ extern char _ctype[257]; /* character type table */ #define isalpha(c) (_ctype[(c)+1]&(_U|_L)) #define isupper(c) (_ctype[(c)+1]&_U) #define islower(c) (_ctype[(c)+1]&_L) #define isdigit(c) (_ctype[(c)+1]&_N) #define isxdigit(c) (_ctype[(c)+1]&_X) #define isspace(c) (_ctype[(c)+1]&_S) #define ispunct(c) (_ctype[(c)+1]&_P) #define isalnum(c) (_ctype[(c)+1]&(_U|_L|_N)) #define isprint(c) (_ctype[(c)+1]&(_P|_U|_L|_N|_B)) #define isgraph(c) (_ctype[(c)+1]&(_P|_U|_L|_N)) #define iscntrl(c) (_ctype[(c)+1]&_C) #define isascii(c) ((unsigned)(c)<=127) #define iscsym(c) (isalnum(c)||(((c)&127)==0x5f)) #define iscsymf(c) (isalpha(c)||(((c)&127)==0x5f)) #define _toupper(c) ((c)-'a'+'A') #define _tolower(c) ((c)+'a'-'A') #define toascii(c) ((c)&127) #endif e NULL ((void *)0) #endif X/* * dirent.h - POSIX directory functions * * Copyright (c) 1990 HiSoft */ #ifndef _DIRENT_H #define _DIRENT_H #ifndef _TIME_T #define _TIME_T typedef long time_t; #endif #ifndef _SIZE_T #define _SIZE_T typedef unsigned long size_t; #endif /* structure pointed to by readdir() */ struct dirent { int d_attr; /* file attribute */ time_t d_time; /* time */ size_t d_size; /* file size */ char d_name[13]; /* directory entry name */ }; typedef struct { long d_length; /* number of directory entries */ long d_pos; /* current position */ struct dirent *d_names; /* list of directory entries */ } DIR; DIR *opendir(const char *filename); struct dirent *readdir(DIR *); void closedir(DIR *); void rewinddir(DIR *); void seekdir(DIR *,size_t); long telldir(DIR *); #ifndef __NO_DIRENT_DEFINES #define rewinddir(d) ((d)->d_pos=0) #define seekdir(d,loc) ((d)->d_pos=(loc)) #define telldir(d) ((d)->d_pos) #endif #endif #/* * dos.h - interface between compiler and OS * * Started 27/8/89 Alex G. Kiernan * * Copyright (c) 1989 HiSoft */ #ifndef _DOS_H #define _DOS_H #include #include #include #ifndef _SIZE_T #define _SIZE_T typedef unsigned long int size_t; #endif /* * * The following definitions specify the particular C compiler being used. * * LATTICE Lattice C compiler * */ #define LATTICE 1 #define LATTICE_V4 1 #define LATTICE_V5 1 /* * * The following type definitions take care of the particularly nasty * machine dependency caused by the unspecified handling of sign extension * in the C language. When converting "char" to "int" some compilers * will extend the sign, while others will not. Both are correct, and * the unsuspecting programmer is the loser. For situations where it * matters, the new type "byte" is equivalent to "unsigned char". * */ typedef unsigned char byte; /* * * Miscellaneous definitions * */ #define SECSIZ 512 /* disk sector size */ /* * * OS specific definitions * */ extern short _tos; /* tos version number */ extern enum {USA,FRG,FRA,GBR,SPA,ITA,SWE,SWF,SWG,TUR,FIN,NOR,DEN,SAU,HOL} _country; /* * * The following symbols define the sizes of file names and node names. * */ #define FNSIZE 13 /* maximum file node size */ #define FMSIZE 128 /* maximum file name size */ #define FESIZE 4 /* maximum file extension size */ /* * * This structure contains disk size information returned by the getdfs * function. */ struct DISKINFO { unsigned long free; /* number of free clusters */ unsigned long cpd; /* clusters per drive */ unsigned long bps; /* bytes per sector */ unsigned long spc; /* sectors per cluster */ }; /* * * The following structure is used by the dfind and dnext functions to * hold file information. * */ struct FILEINFO { char resv[21]; /* reserved */  char attr; /* actual file attribute */ long time; /* file time and date */ long size; /* file size in bytes */ char name[14]; /* file name */ }; extern size_t _MSTEP; extern long _MNEED; /* * Ctrl-C checking master switch variable */ extern int __chkabort; /* defaults to 0, i.e. OFF */ /* * I/O services */ /* hidden by #defines */ long _dclose(int); long _dcreat(const char *, int); long _dopen(const char *, int); int getcd(int, char *); int getfa(const char *); int chgfa(const char *, int); int getdsk(void); __regargs long _CXCERR(long); /* always __regargs for efficiency */ #ifndef __NO_DOS_DEFINES #define _dclose(hand) _CXCERR(Fclose(hand)) #define _dcreat(name,prot) _CXCERR(Fcreate(name,prot)) #define _dopen(name,mode) _CXCERR(Fopen(name,mode)) #define getfa(name) ((int)_CXCERR(Fattrib(name,0,0))) #define chgfa(name,fa) ((int)_CXCERR(Fattrib(name,1,fa))) #define getdsk() ((int)_CXCERR(Dgetdrv())) #endif long _dcreatx(const char *, int); long _dread(int, void *, long); long _dwrite(int, const void *, long); long _dseek(int, long, int); int _disatty(int); int _ddup(int); int _ddup2(int, int); #ifndef __NO_DOS_DEFINES #define _ddup(x) ((int)_CXCERR(Fdup(x))) #define _ddup2(x,y) ((int)_CXCERR(Fforce(x,y))) #endif int chgdsk(int); void chgdta(struct FILEINFO *); struct FILEINFO *getdta(void); #ifndef __NO_DOS_DEFINES #define chgdsk(a) ((int)Dsetdrv(a)) #define chgdta(a) ((void)(Fsetdta(a))) #define getdta() ((struct FILEINFO *)_CXCERR(Fgetdta())) #endif int dfind(struct FILEINFO *, const char *, int); int dnext(struct FILEINFO *); int getdfs(int,struct DISKINFO *); #ifndef __NO_DOS_DEFINES #define getdfs(a,b) ((int)_CXCERR(Dfree((long *)b,a))) #endif long getft(int); int chgft(int, long); /* * * Miscellaneous external definitions * */ long ftpack(const char *); void ftunpk(long, char *); int getpf(char *,const char *); int getpfe(char *,const char *); __stdargs void _stub(void); __stdargs void _xcovf(void); void getclk(unsigned char *); int chgclk(unsigned char *); int onbreak(int (*)()); void onerror(int); int poserr(const char *); extern long volatile _oserr; extern long volatile _OSERR; extern unsigned long int _STACK; #define geta4 __builtin_geta4 extern void geta4(void); #define getreg __builtin_getreg extern long getreg(int); #define putreg __builtin_putreg extern void putreg(int, long); #define __emit __builtin_emit extern void __emit(int); #define REG_D0 0 #define REG_D1 1 #define REG_D2 2 #define REG_D3 3 #define REG_D4 4 #define REG_D5 5 #define REG_D6 6 #define REG_D7 7 #define REG_A0 8 #define REG_A1 9 #define REG_A2 10 #define REG_A3 11 #define REG_A4 12 #define REG_A5 13 #define REG_A6 14 #define REG_A7 15 #endif //* * assert.h - define errors and error symbols * * Copyright (c) 1990 HiSoft */ #ifndef _ERRNO_H #define _ERRNO_H #define EOSERR -1 /* Operating system error */ #define EPERM 1 /* User is not owner */ #define ENOENT 2 /* No such file or directory */ #define ESRCH 3 /* No such process */ #define EINTR 4 /* Interrupted system call */ #define EIO 5 /* I/O error */ #define ENXIO 6 /* No such device or address */ #define E2BIG 7 /* Arg list is too long */ #define ENOEXEC 8 /* Exec format error */ #define EBADF 9 /* Bad file number */ #define ECHILD 10 /* No child process */ #define EAGAIN 11 /* No more processes allowed */ #define ENOMEM 12 /* No memory available */ #define EACCES 13 /* Access denied */ #define EFAULT 14 /* Bad address */ #define ENOTBLK 15 /* Bulk device required */ #define EBUSY 16 /* Resource is busy */ #define EEXIST 17 /* File already exists */ #define EXDEV 18 /* Cross-device link */ #define ENODEV 19 /* No such device */ #define ENOTDIR 20 /* Not a directory */ #define EISDIR 21 /* Is a directory */ #define EINVAL 22 /* Invalid argument */ #define ENFILE 23 /* No more files (units) allowed */ #define EMFILE 24 /* No more files (units) allowed for this process */ #define ENOTTY 25 /* Not a terminal */ #define ETXTBSY 26 /* Text file is busy */ #define EFBIG 27 /* File is too large */ #define ENOSPC 28 /* No space left */ #define ESPIPE 29 /* Seek issued to pipe */ #define EROFS 30 /* Read-only file system */ #define EMLINK 31 /* Too many *links */ #define EPIPE 32 /* Broken pipe */ #define EDOM 33 /* Math function argument error */ #define ERANGE 34 /* Math function result is out of range */ extern int errno; extern int sys_nerr; extern char *sys_errlist[]; #endif result is out of range */ extern int errno; extern int sys_nerr; extern char *sys_errlist[]; #define NULL ((void *)0) /* * error.h - defunct header file for backward compatability */ #include /* * fcntl.h - level 1 I/O interface file * * Started 28/8/89 Alex G. Kiernan, based on Lattice source * * Copyright (c) 1989 HiSoft and Lattice, Inc. */ #ifndef _FCNTL_H #define _FCNTL_H #ifndef _SIZE_T #define _SIZE_T typedef unsigned long int size_t; #endif /* * * The following symbols are used for the "open" and "creat" functions. * They are generally UNIX-compatible, except for O_APPEND under MSDOS, * which has been moved in order to accomodate the file sharing flags * defined in MSDOS Version 3. * */ #define O_RDONLY 0 /* Read-only value (right byte of mode word) */ #define O_WRONLY 1 /* Write-only value */ #define O_RDWR 2 /* Read-write value */ #define O_NDELAY 0 /* Non-blocking I/O flag (N/A) */ #define O_APPEND 8 /* Append mode flag */ #define O_CREAT 0x0100 /* File creation flag */ #define O_TRUNC 0x0200 /* File truncation flag */ #define O_EXCL 0x0400 /* Exclusive access flag */ #define O_RAW 0x8000 /* Raw I/O flag (Lattice feature) */ #define O_BINARY O_RAW /* popular synonym */ /* * * The following flags are used to establish the protection mode. * */ #define S_IREAD 0400 #define S_IWRITE 0200 #define S_IEXEC 0100 /* * * The following symbols are used for the "fcntl" function. * */ #define F_DUPFD 0 /* Duplicate file descriptor */ #define F_GETFD 1 /* Get file descriptor flags */ #define F_SETFD 2 /* Set file descriptor flags */ #define F_GETFL 3 /* Get file flags */ #define F_SETFL 4 /* Set file flags */ /* * * External definitions * */ int open(const char *, int, ...); int opene(const char *, int, int, char *); long read(int, void *, size_t); long write(int, const void *, size_t); int creat(const char *, int); long lseek(int, long, int); long tell(int); int close(int); int iomode(int, int); int isatty(int); long filelength(int); #ifndef __NO_FCNTL_DEFINES #define creat(name, prot) open(name,O_WRONLY|O_TRUNC|O_CREAT|(prot & O_RAW),(prot & ~O_RAW)) #endif #undef rename int rename(const char *,const char *); #ifndef __NO_FCNTL_DEFINES long _lgscc(int,int,const char *,const char *); #pragma inline d0=_lgscc((short),(short),,) {register d2,a2; "4e41";} #define rename(x,y) _CXCERR(_lgscc(0x56,0,x,y)) #endif #undef remove int remove(const char *); #ifndef __NO_FCNTL_DEFINES long _lgc(int,const char *); #pragma inline d0=_lgc((short),) {register d2,a2; "4e41";} #define remove(x) _CXCERR(_lgc(0x41,x)) #endif #undef unlink int unlink(const char *); #ifndef __NO_FCNTL_DEFINES #define unlink remove #endif #define NULL ((void *)0) #endif /* * fctype.h - define function forms of "is" and "to" operations. * * Copyright (c) 1990 HiSoft */ #ifndef _FCTYPE_H #define _FCTYPE_H #undef isalnum #undef isalpha #undef iscntrl #undef isdigit #undef isgraph #undef islower #undef isprint #undef ispunct #undef isspace #undef isupper #undef isxdigit #undef tolower #undef toupper int isalnum(int); int isalpha(int); int iscntrl(int); int isdigit(int); int isgraph(int); int islower(int); int isprint(int); int ispunct(int); int isspace(int); int isupper(int); int isxdigit(int); int tolower(int); int toupper(int); /* * Extensions to the ANSI standard. */ #undef isascii #undef iscsym #undef iscsymf #undef toascii int isascii(int); int iscsym(int); int iscsymf(int); int toascii(int); #endif /* * float.h - floating point limit definitions required by ANSI * * Copyright (c) 1990 HiSoft. */ #ifndef _FLOAT_H #define _FLOAT_H /* * The following symbols are specified in the ANSI C standard for the * floating point number system. */ #define FLT_RADIX 2 /* radix of exponent */ #define FLT_ROUNDS 1 /* rounding mode during translation */ /* 0 => chop */ /* 1 => round */ /* 2 => indeterminate */ #define FLT_GUARD 0 /* guard digits during multiplication */ /* 0 => No */ /* 1 => Yes */ #define FLT_NORMALIZE 1 /* normalization required */ /* 0 => No */ /* 1 => Yes */ #define __SINGLE_MANT_DIG 24 /* # radix digits in float mantissa */ #define __DOUBLE_MANT_DIG 53 /* # radix digits in double mantissa */ #define __EXTEND_MANT_DIG 53 /* # radix digits in long double mant. */ #define __SINGLE_DIG 7 /* max decimal digits for float */ #define __DOUBLE_DIG 16 /* max decimal digits for double */ #define __EXTEND_DIG 16 /* max decimal digits for long double */ #define __SINGLE_MIN_EXP -126 /* min radix exponent for float */ #define __DOUBLE_MIN_EXP -1022 /* min radix exponent for double */ #define __EXTEND_MIN_EXP -1022 /* min radix exponent for long double */ #define __SINGLE_MIN_10_EXP -38 /* min decimal exponent for float */ #define __DOUBLE_MIN_10_EXP -308 /* min decimal exponent for double */ #define __EXTEND_MIN_10_EXP -308 /* min decimal exponent for long double */ #define __SINGLE_MAX_EXP 128 /* max radix exponent for float */ #define __DOUBLE_MAX_EXP 1024 /* max radix exponent for double */ #define __EXTEND_MAX_EXP 1024 /* max radix exponent for double long */ #define __SINGLE_MAX_10_EXP 38 /* max decimal exponent for float */ #define __DOUBLE_MAX_10_EXP 308 /* max decimal exponent for double */ #define __EXTEND_MAX_10_EXP 308 /* max decimal exponent for long double */ #define __SINGLE_MAX 3.40282347E+38 #define __DOUBLE_MAX 1.797693134862317E+308 #define __EXTEND_MAX 1.797693134862317E+308 #define __SINGLE_EPSILON 1.19209290E-07 #define __DOUBLE_EPSILON 2.2204460492503147E-16 #define __EXTEND_EPSILON 2.2204460492503147E-16 #define __SINGLE_MIN 3.40282347E-38 #define __DOUBLE_MIN 1.797693134862316E-308 #define __EXTEND_MIN 1.797693134862316E-308 #if defined(_MSINGLE) #define FLT_MANT_DIG __SINGLE_MANT_DIG #define DBL_MANT_DIG __SINGLE_MANT_DIG #define LDBL_MANT_DIG __SINGLE_MANT_DIG #define FLT_DIG __SINGLE_DIG #define DBL_DIG __SINGLE_DIG #define LDBL_DIG __SINGLE_DIG #define FLT_MIN_EXP __SINGLE_MIN_EXP #define DBL_MIN_EXP __SINGLE_MIN_EXP #define LDBL_MIN_EXP __SINGLE_MIN_EXP #define FLT_MIN_10_EXP __SINGLE_MIN_10_EXP #define DBL_MIN_10_EXP __SINGLE_MIN_10_EXP #define LDBL_MIN_10_EXP __SINGLE_MIN_10_EXP #define FLT_MAX_EXP __SINGLE_MAX_EXP #define DBL_MAX_EXP __SINGLE_MAX_EXP #define LDBL_MAX_EXP __SINGLE_MAX_EXP #define FLT_MAX_/* * gemextra.h - Lattice 3 compatability file * * Started 9/11/89 Alex G. Kiernan * * Copyright (c) 1989 HiSoft */ #ifndef _GEMEXTRA_H #define _GEMEXTRA_H #ifndef min int min(int,int); int __builtin_min(int,int); #define min(a,b) __builtin_min(a,b) #endif #ifndef max int max(int,int); int __builtin_max(int,int); #define max(a,b) __builtin_max(a,b) #endif int rc_intersect(GRECT *,GRECT *); #endif M /* * gemlib.h - Lattice 3 compatability file * * Started 3/11/89 Alex G. Kiernan * * Copyright (c) 1989 HiSoft */ #include #include Z/* * ios1.h - level 1 I/O interface file * * Started 28/8/89 Alex G. Kiernan, based on Lattice source. * * Copyright (c) 1989 HiSoft and Lattice, Inc. */ #ifndef _IOS1_H #define _IOS1_H /* * The following structure is a UNIX file block that retains information * about a file being accessed via the level 1 I/O functions. */ struct UFB { short ufbflg; /* flags */ short ufbfh; /* file handle */ }; #define NUFBS 40 /* number of UFBs defined */ /* * * UFB.ufbflg definitions * */ #define UFB_RA 1 /* reading is allowed */ #define UFB_WA 2 /* writing is allowed */ #define UFB_NC 4 /* no close */ #define UFB_FH 16 /* file handle */ /* * * External definitions * */ extern struct UFB _ufbs[NUFBS]; extern int _iomode,_nufbs; struct UFB *chkufb(int); #endif /* * limits.h - various system limits definitions required by ANSI * * Started 21/9/89 Alex G. Kiernan, based on Lattice source * * Copyright (c) 1989 HiSoft and Lattice, Inc. */ #ifndef _LIMITS_H #define _LIMITS_H #define CHAR_BIT 8 /* bits per char */ #define SCHAR_MAX 127 /* max value for signed char */ #define SCHAR_MIN -128 /* min value for signed char */ #define UCHAR_MAX 255 /* max value for unsigned char */ #ifdef _UNSIGNEDCHAR #define CHAR_MAX UCHAR_MAX /* max value for char */ #define CHAR_MIN 0 /* min value for char */ #else #define CHAR_MAX SCHAR_MAX /* max value for char */ #define CHAR_MIN SCHAR_MIN /* min value for char */ #endif #define SHRT_MAX 32767 /* max value for short int */ #define SHRT_MIN -32767 /* min value for short int */ #define USHRT_MAX 65535 /* max value for unsigned short int */ #define LONG_MAX 2147483647 /* max value for long int */ #define LONG_MIN -2147483648 /* min value for long int */ #define ULONG_MAX 4294967295 /* max value for unsigned long int */ #ifdef _SHORTINT #define INT_MAX SHRT_MAX /* max value for short int */ #define INT_MIN SHRT_MIN /* min value for short int */ #define UINT_MAX USHRT_MAX /* max value for unsigned short int */ #else #define INT_MAX LONG_MAX /* max value for int */ #define INT_MIN LONG_MIN /* min value for int */ #define UINT_MAX ULONG_MAX /* max value for unsigned int */ #endif #define MB_LEN_MAX 2 #endif f /* * linea.h - vdi primitives interface file * * Started 31/8/89 Alex G. Kiernan * * Copyright (c) 1989 HiSoft */ #ifndef _LINEA_H #define _LINEA_H /* Lattice 3 flavour */ typedef struct linea_info { long li_d0; /* linea data structure pointer */ struct la_data *li_a0; /* linea data structure pointer */ struct la_font **li_a1; /* system font vector */ long (*li_a2)(); /* linea function vector */ } LINEA_INFO; extern struct linea_info la_info; /* Mark Williams flavour */ struct linea_init { long li_d0; /* linea data structure pointer */ struct la_data *li_a0; /* linea data structure pointer */ struct la_font **li_a1; /* system font vector */ long (*li_a2)(); /* linea function vector */ }; extern struct linea_init la_init; typedef struct la_data { short ld_vplanes; /* number of video planes */ short ld_vwrap; /* number of bytes/video line */ short *ld_contrl; /* pointer to CONTRL array */ short *ld_intin; /* pointer to INTIN array */ short *ld_ptsin; /* pointer to PTSIN array */ short *ld_intout; /* pointer to INTOUT array */ short *ld_ptsout; /* pointer to PTSOUT array */ short ld_colbit[4]; /* colour bit-plane[i] value */ short ld_lstlin; /* plot last pixel flag */ short ld_lnmask; /* line-style mask */ short ld_wmode; /* writing mode 0:replace, 1:transparent,  2:exclusive OR, 3:inverse transparent */ short ld_x1; /* X1 coordinate */ short ld_y1; /* Y1 coordinate */ short ld_x2; /* X2 coordinate */ short ld_y2; /* Y2 coordinate */ short *ld_patptr; /* fill pattern pointer */ short ld_patmsk; /* fill pattern mask */ short ld_mfill; /* multi-plane fill flag */ short ld_clip; /* clipping flag */ short ld_xmincl; /* minimum X clipping value */ short ld_ymincl; /* minimum Y clipping value */ short ld_xmaxcl; /* maximum X clipping value */ short ld_ymaxcl; /* maximum Y clipping value */ short ld_xdda; /* accumulator for textblt dda */ short ld_ddainc; /* fixed point scale factor */ short ld_scaldir; /* scale direction flag */ short ld_mono; /* current font is monospaced */ short ld_srcx; /* X coord of character in font */ short ld_srcy; /* Y coord of character in font */ short ld_dstx; /* X coord of character on screen */ short ld_dsty; /* Y coord of character on screen */ short ld_delx; /* width of character */ short ld_dely; /* height of character */ void *ld_fbase; /* pointer to start of font form */ short ld_fwidth; /* width of font form */ short ld_style; /* textblt special effects flags */ short ld_litemsk; /* lightening mask */ short ld_skewmsk; /* skewing mask */ short ld_weight; /* thickening factor */ short ld_roff; /* skew offset above baseline */ short ld_loff; /* skew offset below baseline */ short ld_scale; /* scaling flag */ short ld_chup; /* character rotation vector */ short ld_textfg; /* text foreground colour */ void *ld_scrtchp; /* text special effects buffer */ short ld_scrpt2; /* offset to scaling buffer from above */ short ld_textbg; /* text background colour */ short ld_copytran; /* copy raster form type flag */ int (*ld_seedabort)(void); /* seedfill end detect function */ } LA_DATA; typedef struct la_ext { long ld_resvd1; struct la_font *ld_cur_font; /* pointer to current font header */ short ld_resvd2[23]; short ld_m_pos_hx; /* mouse x hot spot */ short ld_m_pos_hy; /* mouse y hot spot */ short ld_m_planes; /* writing mode for mouse */ short ld_m_cdb_bg; /* mouse background colour */ short ld_m_cdb_fg; /* mouse foreground colour */ short ld_mask_form[32]; /* mouse mask and form */ short ld_inq_tab[45]; /* vq_extnd information */ short ld_dev_tab[45]; /* v_opnwk information */ short ld_gcurx; /* current mouse x position */ short ld_gcury; /* current mouse x position */ short ld_m_hid_ct; /* mouse hide count */ short ld_mouse_bt; /* mouse button status */ short ld_req_col[3][16]; /* internal vq_color lookup */ short ld_siz_tab[15]; /* current text, line and marker sizes */ short ld_resvd3; short ld_resvd4; short *ld_cur_work; /* current vwork attributes */ struct la_font *ld_def_font; /* default font header */ struct la_font *ld_font_ring[4];/* vdi font ring */ short ld_font_count; /* number of fonts in font ring */ short ld_resvd5[45]; unsigned char ld_cur_ms_stat; /* mouse status */ char ld_resvd6; short ld_v_hid_cnt; /* cursor hide count */ short ld_cur_x; /* mouse x position */ short ld_cur_y; /* mouse y position */ char ld_cur_flag; /* mouse draw status */ char ld_mouse_flag; /* mouse processing enabled */ long ld_resvd7; short ld_v_sav_xy[2]; /* saved cursor xy position */ short ld_save_len; /* height of saved form */ short *ld_save_addr; /* screen address of saved form */ short ld_save_stat; /* save status */ long ld_save_area[4][16]; /* form save area */ void (*ld_user_tim)(); /* user timer vector */ void (*ld_next_tim)(); /* next timer vector */ void (*ld_user_but)(); /* user button vector */ void (*ld_user_cur)(); /* user cursor vector */ void (*ld_user_mot)(); /* user motion vector */ short ld_cel_ht; /* cell height */ short ld_cel_mx; /* max x cells */ short ld_cel_my; /* max y cells */ short ld_cel_wr; /* displacement to next vertical cell */ short ld_col_bg; /* background colour index */ short ld_col_fg; /* foreground colour index */ void *ld_cur_ad; /* cursor address */ short ld_cur_off; /* offset to first cell */ short ld_cur_xy[2]; /* cursor xy position */ char ld_cur_cnt; /* cursor flash period */ char ld_cur_tim; /* cursor flash countdown */ void *ld_fnt_ad; /* address of font data */ short ld_fnt_nd; /* last ade in font */ short ld_fnt_st; /* first ade in font */ short ld_fnt_wr; /* font form width */ short ld_x_max; /* horizontal pixel resolution */ void *ld_off_ad; /* pointer to font offset table */ short ld_status; /* cursor status */ short ld_y_max; /* vertical pixel resolution */ short ld_bytes_lin; /* width of destination form */ } LA_EXT; /* Lattice 3 compatability macros */ #define VPLANES la_info.li_a0->ld_vplanes #define VWRAP la_info.li_a0->ld_vwrap #define CONTRL la_info.li_a0->ld_contrl #define INTIN la_info.li_a0->ld_intin #define PTSIN la_info.li_a0->ld_ptsin #define INTOUT la_info.li_a0->ld_intout #define PTSOUT la_info.li_a0->ld_ptsout #define COLBIT0 la_info.li_a0->ld_colbit[0] #define COLBIT1 la_info.li_a0->ld_colbit[1] #define COLBIT2 la_info.li_a0->ld_colbit[2] #define COLBIT3 la_info.li_a0->ld_colbit[3] #define LSTLIN la_info.li_a0->ld_lstlin #define LNMASK la_info.li_a0->ld_lnmask #define WMODE la_info.li_a0->ld_wmode #define X1 la_info.li_a0->ld_x1 #define Y1 la_info.li_a0->ld_y1 #define X2 la_info.li_a0->ld_x2 #define Y2 la_info.li_a0->ld_y2 #define PATPTR la_info.li_a0->ld_patptr #define PATMSK la_info.li_a0->ld_patmsk #define MFILL la_info.li_a0->ld_mfill #define CLIP la_info.li_a0->ld_clip #define XMINCL la_info.li_a0->ld_xmincl #define YMINCL la_info.li_a0->ld_ymincl #define XMAXCL la_info.li_a0->ld_xmaxcl #define YMAXCL la_info.li_a0->ld_ymaxcl #define XDDA la_info.li_a0->ld_xdda #define DDAINC la_info.li_a0->ld_ddainc #define SCALDIR la_info.li_a0->ld_scaldir #define MONO la_info.li_a0->ld_mono #define SRCX la_info.li_a0->ld_srcx #define SRCY la_info.li_a0->ld_srcy #define DSTX la_info.li_a0->ld_dstx #define DSTY la_info.li_a0->ld_dsty #define DELX la_info.li_a0->ld_delx #define DELY la_info.li_a0->ld_dely #define FBASE la_info.li_a0->ld_fbase #define FWIDTH la_info.li_a0->ld_fwidth #define STYLE la_info.li_a0->ld_style #define LITEMSK la_info.li_a0->ld_litemsk #define SKEWMSK la_info.li_a0->ld_skewmsk #define WEIGHT la_info.li_a0->ld_weight #define ROFF la_info.li_a0->ld_roff #define LOFF la_info.li_a0->ld_loff #define SCALE la_info.li_a0->ld_scale #define CHUP la_info.li_a0->ld_chup #define TEXTFG la_info.li_a0->ld_textfg #define SCRTCHP la_info.li_a0->ld_scrtchp #define SCRPT2 la_info.li_a0->ld_scrpt2 #define TEXTBG la_info.li_a0->ld_textbg #define COPYTRAN la_info.li_a0->ld_copytran #define SEEDABORT la_info.li_a0->ld_seedabort #define V_CUR_FONT ((LA_EXT *)la_info.li_a0-1)->ld_cur_font #define V_M_POS_HX ((LA_EXT *)la_info.li_a0-1)->ld_m_pos_hx #define V_M_POS_HY ((LA_EXT *)la_info.li_a0-1)->ld_m_pos_hy #define V_M_PLANES ((LA_EXT *)la_info.li_a0-1)->ld_m_planes #define V_M_CDB_BG ((LA_EXT *)la_info.li_a0-1)->ld_m_cdb_bg #define V_M_CDB_FG ((LA_EXT *)la_info.li_a0-1)->ld_m_cdb_fg #define V_MASK_FORM ((LA_EXT *)la_info.li_a0-1)->ld_mask_form #define V_INQ_TAB ((LA_EXT *)la_info.li_a0-1)->ld_inq_tab #define V_DEV_TAB ((LA_EXT *)la_info.li_a0-1)->ld_dev_tab #define V_GCURX ((LA_EXT *)la_info.li_a0-1)->ld_gcurx #define V_GCURY ((LA_EXT *)la_info.li_a0-1)->ld_gcury #define V_M_HID_CT ((LA_EXT *)la_info.li_a0-1)->ld_m_hid_ct #define V_MOUSE_BT ((LA_EXT *)la_info.li_a0-1)->ld_mouse_bt #define V_REQ_COL ((LA_EXT *)la_info.li_a0-1)->ld_req_col #define V_SIZ_TAB ((LA_EXT *)la_info.li_a0-1)->ld_siz_tab #define V_CUR_WORK ((LA_EXT *)la_info.li_a0-1)->ld_cur_work #define V_DEF_FONT ((LA_EXT *)la_info.li_a0-1)->ld_def_font #define V_FONT_RING ((LA_EXT *)la_info.li_a0-1)->ld_font_ring #define V_FONT_COUNT ((LA_EXT *)la_info.li_a0-1)->ld_font_count #define V_CUR_MS_STAT ((LA_EXT *)la_info.li_a0-1)->ld_cur_ms_stat #define V_V_HID_CNT ((LA_EXT *)la_info.li_a0-1)->ld_v_hid_cnt #define V_CUR_X ((LA_EXT *)la_info.li_a0-1)->ld_cur_x #define V_CUR_Y ((LA_EXT *)la_info.li_a0-1)->ld_cur_y #define V_CUR_FLAG ((LA_EXT *)la_info.li_a0-1)->ld_cur_flag #define V_MOUSE_FLAG ((LA_EXT *)la_info.li_a0-1)->ld_mouse_flag #define V_V_SAV_XY ((LA_EXT *)la_info.li_a0-1)->ld_v_sav_xy #define V_SAVE_LEN ((LA_EXT *)la_info.li_a0-1)->ld_save_len #define V_SAVE_ADDR ((LA_EXT *)la_info.li_a0-1)->ld_save_addr #define V_SAVE_STAT ((LA_EXT *)la_info.li_a0-1)->ld_save_stat #define V_SAVE_AREA ((LA_EXT *)la_info.li_a0-1)->ld_save_area #define V_USER_TIM ((LA_EXT *)la_info.li_a0-1)->ld_user_tim #define V_NEXT_TIM ((LA_EXT *)la_info.li_a0-1)->ld_next_tim #define V_USER_BUT ((LA_EXT *)la_info.li_a0-1)->ld_user_but #define V_USER_CUR ((LA_EXT *)la_info.li_a0-1)->ld_user_cur #define V_USER_MOT ((LA_EXT *)la_info.li_a0-1)->ld_user_mot #define V_CEL_HT ((LA_EXT *)la_info.li_a0-1)->ld_cel_ht #define V_CEL_MX ((LA_EXT *)la_info.li_a0-1)->ld_cel_mx #define V_CEL_MY ((LA_EXT *)la_info.li_a0-1)->ld_cel_my #define V_CEL_WR ((LA_EXT *)la_info.li_a0-1)->ld_cel_wr #define V_COL_BG ((LA_EXT *)la_info.li_a0-1)->ld_col_bg #define V_COL_FG ((LA_EXT *)la_info.li_a0-1)->ld_col_fg #define V_CUR_AD ((LA_EXT *)la_info.li_a0-1)->ld_cur_ad #define V_CUR_OFF ((LA_EXT *)la_info.li_a0-1)->ld_cur_off #define V_CUR_CX ((LA_EXT *)la_info.li_a0-1)->ld_cur_xy[0] #define V_CUR_CY ((LA_EXT *)la_info.li_a0-1)->ld_cur_xy[1] #define V_CUR_CNT ((LA_EXT *)la_info.li_a0-1)->ld_cur_cnt #define V_CUR_TIM ((LA_EXT *)la_info.li_a0-1)->ld_cur_tim #define V_FNT_AD ((LA_EXT *)la_info.li_a0-1)->ld_fnt_ad #define V_FNT_ND ((LA_EXT *)la_info.li_a0-1)->ld_fnt_nd #define V_FNT_ST ((LA_EXT *)la_info.li_a0-1)->ld_fnt_st #define V_FNT_WR ((LA_EXT *)la_info.li_a0-1)->ld_fnt_wr #define V_X_MAX ((LA_EXT *)la_info.li_a0-1)->ld_x_max #define V_OFF_AD ((LA_EXT *)la_info.li_a0-1)->ld_off_ad #define V_STATUS ((LA_EXT *)la_info.li_a0-1)->ld_status #define V_Y_MAX ((LA_EXT *)la_info.li_a0-1)->ld_y_max #define BYTES_LIN ((LA_EXT *)la_info.li_a0-1)->ld_bytes_lin #define putpixel(x,y,v) ((PTSIN[0]=(x)),(PTSIN[1]=(y)),(INTIN[0]=(v)),linea1()) #define getpixel(x,y) ((PTSIN[0]=(x)),(PTSIN[1]=(y)),linea2()) #define showmouse(show) (INTIN[0]=show,linea9()) #define hidemouse() lineaa() #define mousehidden (V_M_HID_CT) typedef struct la_blk { short bl_xmin; /* minimum x */ short bl_ymin; /* minimum y */ short *bl_form; /* word aligned memory form */ short bl_nxwd; /* offset to next word in line */ short bl_nxln; /* offset to next line in plane */ short bl_nxpl; /* offset to next plane */ } LA_BLK; typedef struct la_blit { short bb_b_wd; /* width of block in pixels */ short bb_b_ht; /* height of block in pixels */ short bb_plane_ct; /* number of planes to blit */ short bb_fg_col; /* foreground colour */ short bb_bg_col; /* background colour */ char bb_op_tab[4]; /* Logic for fg x bg combination */ struct la_blk bb_s; /* source info block */ struct la_blk bb_d; /* destination info block */ short *bb_p_addr; /* pattern buffer address */ short bb_p_nxln; /* offset to next line in pattern */ short bb_p_nxpl; /* offset to next plane in pattern */ short bb_p_mask; /* pattern index mask */ char bb_fill[24]; /* work space */ } LA_BLIT; typedef struct la_sprite { short ls_xhot; /* X hot spot offset */ short ls_yhot; /* Y hot spot offset */ short ls_form; /* 1 for VDI, -1 for XOR */ short ls_bgcol; /* background colour index */ short ls_fgcol; /* foreground colour index */ short ls_image[32]; /* background/foreground interleaved image */ } LA_SPRITE; typedef struct la_font { short font_id; /* face identifier */ short font_size; /* font size in points */ char font_name[32]; /* face name */ short font_low_ade; /* lowest ASCII value in face */ short font_hi_ade; /* highest ASCII value in face */ short font_top_dst; /* top line distance */ short font_ascent_dst; /* ascent line distance */ short font_half_dst; /* half line distance */ short font_descent_dst; /* descent line distance */ short font_bottom_dist; /* bottom line distance */ short font_fatest; /* width of widest char in font */ short font_fat_cell; /* width of widest char cell in font */ short font_left_off; /* left offset */ short font_right_off; /* right offset */ short font_thickening; /* no. of pixels to widen chars */ short font_underline; /* width in pixels of underline */ short font_lightening; /* mask used to drop pixels out */ short font_skewing; /* mask used to determine skewing */ short font_flags; /* font flags */ short *font_horiz_off; /* pointer to horizontal offset table */ short *font_char_off; /* pointer to char offset table */ void *font_data; /* pointer to font data */ short font_width; /* font width */ short font_height; /* font height */ struct la_font *font_next; /* pointer to next font */ } LA_FONT; struct la_data *linea0(void); void linea1(void); short linea2(void); void linea3(void); void linea4(void); void linea5(void); void linea6(void); void linea7(LA_BLIT *); void linea8(void); void linea9(void); void lineaa(void); void lineab(void); void lineac(void *); void linead(int,int,LA_SPRITE *,void *); void lineae(void); void lineaf(void); #pragma inline linea1() {register a2,d2; "a001";} #pragma inline d0=linea2() {register a2,d2; "a002";} #pragma inline linea3() {register a2,d2; "a003";} #pragma inline linea4() {register a2,d2; "a004";} #pragma inline linea5() {register a2,d2; "a005";} #pragma inline linea6() {register a2,d2; "a006";} #pragma inline linea7(a6) {register a2,d2; "a007";} #pragma inline linea8() {register a2,d2; "a008";} #pragma inline linea9() {register a2,d2; "a009";} #pragma inline lineaa() {register a2,d2; "a00a";} #pragma inline lineab() {register a2,d2; "a00b";} #pragma inline lineac(a2) {register a2,d2,a6; "a00c";} #pragma inline linead(d0,d1,a0,a2) {register d2,a6; "a00d";} #pragma inline lineae() {register a2,d2; "a00e";} #pragma inline lineaf() {register a2,d2; "a00f";} #endif J/* * locale.h - localisation functions and macros * * Started 16/11/89 Alex G. Kiernan based on Lattice source * * Copyright (c) 1989 HiSoft and Lattice,Inc. */ #ifndef _LOCALE_H #define _LOCALE_H #define NULL ((void *) 0) #ifndef _SIZE_T #define _SIZE_T typedef unsigned long size_t; #endif #ifndef _WCHAR_T #define _WCHAR_T typedef unsigned int wchar_t; #endif #define LC_COLLATE 0 #define LC_CTYPE 1 #define LC_NUMERIC 2 #define LC_TIME 3 #define LC_MONETARY 4 #define LC_ALL 5 struct lconv { char *decimal_point; char *thousands_sep; char *grouping; #define LCONVM int_curr_symbol char *int_curr_symbol; char *currency_symbol; char *mon_decimal_point; char *mon_thousands_sep; char *mon_grouping; char *positive_sign; char *negative_sign; char int_frac_digits; char frac_digits; char p_cs_precedes; char p_sep_by_space; char n_cs_precedes; char n_sep_by_space; char p_sign_posn; char n_sign_posn; }; struct __lconvn /* lconv from LC_NUMERIC */ { char *decimal_point; char *thousands_sep; char *grouping; }; struct __lconvm /* lconv from LC_MONETARY */ { char *int_curr_symbol; char *currency_symbol; char *mon_decimal_point; char *mon_thousands_sep; char *mon_grouping; char *positive_sign; char *negative_sign; char int_frac_digits; char frac_digits; char p_cs_precedes; char p_sep_by_space; char n_cs_precedes; char n_sep_by_space; char p_sign_posn; char n_sign_posn; }; struct __locale { struct __locale *nxtlc; /* next locale pointer */ char *lcname; /* locale name LC_ALL */ char **abswday; /* abbreviated weekday nam LC_TIME */ char **swday; /* full weekday names LC_TIME */ char **absmon; /* abbrev. month names LC_TIME */ char **smon; /* full month names LC_TIME */ char **sampm; /* names for am. and pm. LC_TIME */ char *stzone; /* name for timezone LC_TIME */ int *lccomp; /* collating sequenc LC_COLLATE? */ int *ixfrm; /* translate table LC_COLLA TE */ char decpt; /* decimal point char LC_NUMERIC */ char mb_cur_max; /* max bytes in wide character LC_CTYPE */ char mb_state; /* flag for state-dep mappings LC_CTYPE */ /* mblen function LC_CTYPE */ int (*mblen)(const char *, size_t); int mblen_state; /* mblen shift state LC_CTYPE */ /* mbtowc function LC_CTYPE */ int (*mbtowc)(wchar_t *,const char *, size_t); int mbtowc_state; /* mbtowc shift state LC_CTYPE */ /* wctomb function LC_CTYPE */ int (*wctomb)(char *, wchar_t); int wctomb_state; /* wctomb shift state LC_CTYPE */ /* mbstowcs function LC_CTYPE */ size_t (*mbstowcs)(wchar_t *,const char *, size_t); int mbstowcs_state; /* mbstowcs shift state LC_CTYPE */ /* wcstombs function LC_CTYPE */ size_t (*wcstombs)(char *, const wchar_t *,size_t); int wcstombs_state; /* wcstombs shift state LC_CTYPE */ struct __lconvn *lconvn; /* structure for lconv LC_NUMERIC */ struct __lconvm *lconvm; /* structure for lconv LC_MONETARY */ }; extern struct __locale *__clocale[]; /* current locale for each category */ extern struct lconv __clconv; /* current lconv array */ extern char __decpt; /* current decimal point character */ #define DECPT __decpt extern char __mb_cur_max; extern struct __locale *__flocale; /* first locale in list ("C") */ extern struct __locale *__llocale; /* last locale in list */ char *setlocale(int, const char *); struct lconv *localeconv(void); struct __locale *readlocale(const char *); /* * Error messages when reading a locale, stored in lclerror */ #define LCLNAME 1 /* pathname for locale file too long */ #define LCLOPEN 2 /* Unable to open locale file */ #define LCLCOLL 3 /* multiple collate spec */ #define LCLCTYPE 4 /* multiple c types spec */ #define LCLNUMERIC 5 /* multiple numeric spec */ #define LCLTIME 6 /* multiple time spec */ #define LCLMONETARY 7 /* multiple monetary spec */ #define LCLREAD 8 /* Error reading locale file */ #define LCLEND 9 /* Missing END record */ extern int __lclerror; #endif clerror; #endif /* * m68881.h - inline 68881 interface file * * Copyright (c) 1990 HiSoft */ #ifndef _M68881_H #define _M68881_H double __builtin_fpc(int, double); #define acos(d) __builtin_fpc(0x001C,d) #define asin(d) __builtin_fpc(0x000C,d) #define atan(d) __builtin_fpc(0x000A,d) #define cos(d) __builtin_fpc(0x001D,d) #define cosh(d) __builtin_fpc(0x0019,d) #define exp(d) __builtin_fpc(0x0010,d) #define fabs(d) __builtin_fpc(0x0018,d) #define log(d) __builtin_fpc(0x0014,d) #define log10(d) __builtin_fpc(0x0015,d) #define pow2(d) __builtin_fpc(0x0011,d) #define sin(d) __builtin_fpc(0x000E,d) #define sinh(d) __builtin_fpc(0x0002,d) #define sqrt(d) __builtin_fpc(0x0004,d) #define tan(d) __builtin_fpc(0x000F,d) #define tanh(d) __builtin_fpc(0x0009,d) #define fintrz(d) __builtin_fpc(0x0003,d) #define flognp1(d) __builtin_fpc(0x0006,d) #define fetoxm1(d) __builtin_fpc(0x0008,d) #define fatanh(d) __builtin_fpc(0x000D,d) #define fgetexp(d) __builtin_fpc(0x001E,d) #define ftentox(d) __builtin_fpc(0x0012,d) #define flog2(d) __builtin_fpc(0x0016,d) #define fneg(d) __builtin_fpc(0x001A,d) #define fgetman(d) __builtin_fpc(0x001F,d) #endif Yu/* * math.h - mathematics header file * * Copyright (c) 1990 HiSoft & Lattice, Inc. */ #ifndef _MATH_H #define _MATH_H #ifdef NONDP #include #endif #ifndef HUGE_VAL #define HUGE_VAL 1.797693134862317E+308 #endif #ifndef EDOM #define EDOM 33 /* Math function argument error */ #endif #ifndef ERANGE #define ERANGE 34 /* Math function result is out of range */ #endif /* * ANSI functions */ double acos(double); double asin(double); double atan(double); double atan2(double, double); double cos(double); double sin(double); double tan(double); double cosh(double); double sinh(double); double exp(double); double frexp(double, int *); double ldexp(double, int); double log(double); double log10(double); double modf(double, double *); double pow(double, double); double sqrt(double); double ceil(double); double fabs(double); double floor(double); double fmod(double, double); /* * Structure to hold information about math exceptions */ struct exception { int type; /* error type */ char *name; /* math function name */ double arg1, arg2; /* function arguments */ double retval; /* proposed return value */ }; /* * Exception type codes, found exception.type */ #define DOMAIN 1 /* domain error */ #define SING 2 /* singularity */ #define OVERFLOW 3 /* overflow */ #define UNDERFLOW 4 /* underflow */ #define TLOSS 5 /* total loss of significance */ #define PLOSS 6 /* partial loss of significance */ #define RANGE 6 /* range error */ /* * Error codes generated by basic arithmetic operations (+ - * /) */ #define FPEUND 1 /* underflow */ #define FPEOVF 2 /* overflow */ #define FPEZDV 3 /* zero divisor */ #define FPENAN 4 /* not a number (invalid operation) */ #define FPECOM 5 /* not comparable */ __stdargs void _CXFERR(int); /* * Floating point constants */ #define PI 3.14159265358979323846 #define PID2 1.57079632679489661923 /* PI/2 */ #define PID4 0.78539816339744830962 /* PI/4 */ #define I_PI 0.31830988618379067154 /* 1/PI */ #define I_PID2 0.63661977236758134308 /* 1/(PI/2) */ #define HUGE HUGE_VAL #define TINY 2.2e-308 #define LOGHUGE 709.778 #define LOGTINY -708.396 typedef struct complex { double re; double im; } COMPLEX; /* * Lattice functions (Non-ANSI) */ double cabs(COMPLEX *); COMPLEX *cadd(COMPLEX *,COMPLEX *,COMPLEX *); COMPLEX *cdiv(COMPLEX *,COMPLEX *,COMPLEX *); COMPLEX *cmul(COMPLEX *,COMPLEX *,COMPLEX *); COMPLEX *csub(COMPLEX *,COMPLEX *,COMPLEX *); double cot(double); double drand48(void); double erand48(unsigned short *); double except(int, char *, double, double, double); char *ecvt(double, int, int *, int *); char *fcvt(double, int, int *, int *); char *gcvt(double, int, char *); long jrand48(unsigned short *); void lcong48(unsigned short *); long lrand48(void); double except(int, char *, double, double, double); int matherr(struct exception *); long mrand48(void); long nrand48(unsigned short *); double pow2(/* * * Redefine secondary simulation function names to become primary names * for systems without a Numeric Data Processor. These symbols are * used when re-compiling the Lattice library source for systems other * than the M68881 * */ #define _acos acos #define _asin asin #define _atan atan #define _cos cos #define _cosh cosh #define _exp exp #define _log log #define _log10 log10 #define _sin sin #define _sinh sinh #define _sqrt sqrt #define _tan tan #define _tanh tanh #define _pow2 pow2 #define _sin sin #define _sinh sinh #define _sqrt sqrt #define _tan tan #define _tanh tanh /* * osbind.h - interface to TOS for Lattice C 5 * * This file contains the general interface to C5 via #pragmas * * Started 10/1/90 Alex G. Kiernan * * Copyright (c) 1990 HiSoft */ #ifndef _OSBIND_H #define _OSBIND_H #if !defined __STDC__ || __STDC__!=1 long int gemdos(int, ...); long int bios(int, ...); long int xbios(int, ...); #endif long int _gemdos(int, ...); long int _bios(int, ...); long int _xbios(int, ...); #ifndef __NO_OSBIND_PRAGMAS void _vgv(int); long _lgv(int); short _sgv(int); void *_pgv(int); void *_pgl(int,long); long _lgs(int,int); void _vgs(int,int); long _lgp(int,void *); void *_pgs(int,int); void *_pgp(int,void *); void _vgp(int,void *); unsigned short _ugv(int); long _lgu(int,unsigned int); void _vgls(int,long,int); long _lgss(int,int,int); long _lgc(int,const char *); void _vgc(int,const char *); long _lgds(int,char *,int); long _lgns(int,long *,int); long _lglss(int,long,int,int); long _lgslp(int,int,long,void *); long _lgspl(int,int,void *,long); long _lgcs(int,const char *,int); long _lgrss(int,short *,int,int); long _lgslq(int,int,long,const void *); long _lgcss(int,const char *,int,int); long _lgscc(int,int,const char *,const char *); long _lgsccc(int,int,const char *,const char *,const char *); #pragma inline _vgv((short)) {register d2,a2; "4e41";} #pragma inline d0=_lgv((short)) {register d2,a2; "4e41";} #pragma inline d0=_sgv((short)) {register d2,a2; "4e41";} #pragma inline d0=_pgv((short)) {register d2,a2; "4e41";} #pragma inline d0=_lgs((short),(short)) {register d2,a2; "4e41";} #pragma inline d0=_lgu((short),(short)) {register d2,a2; "4e41";} #pragma inline d0=_lgp((short),) {register d2,a2; "4e41";} #pragma inline _vgs((short),(short)) {register d2,a2; "4e41";} #pragma inline d0=_pgl((short),) {register d2,a2; "4e41";} #pragma inline d0=_pgs((short),(short)) {register d2,a2; "4e41";} #pragma inline d0=_pgp((short),) {register d2,a2; "4e41";} #pragma inline _vgp((short),) {register d2,a2; "4e41";} #pragma inline d0=_ugv((short)) {register d2,a2; "4e41";} #pragma inline _vgls((short),,(short)) {register d2,a2; "4e41";} #pragma inline d0=_lgc((short),) {register d2,a2; "4e41";} #pragma inline _vgc((short),) {register d2,a2; "4e41";} #pragma inline d0=_lgds((short),,(short)) {register d2,a2; "4e41";} #pragma inline d0=_lgns((short),,(short)) {register d2,a2; "4e41";} #pragma inline d0=_lgss((short),(short),(short)) {register d2,a2; "4e41";} #pragma inline d0=_lglss((short),,(short),(short)) {register d2,a2; "4e41";} #pragma inline d0=_lgslp((short),(short),,) {register d2,a2; "4e41";} #pragma inline d0=_lgspl((short),(short),,) {register d2,a2; "4e41";} #pragma inline d0=_lgcs((short),,(short)) {register d2,a2; "4e41";} #pragma inline _lgrss((short),,(short),(short)) {register d2,a2; "4e41";} #pragma inline d0=_lgslq((short),(short),,) {register d2,a2; "4e41";} #pragma inline d0=_lgcss((short),,(short),(short)) {register d2,a2; "4e41";} #pragma inline d0=_lgscc((short),(short),,) {register d2,a2; "4e41";} #pragma inline d0=_lgsccc((short),(short),,,) {register d2,a2; "4e41";} #else #define _lgc _gemdos #define _lgcs _gemdos #define _lgcss _gemdos #define _lgds _gemdos #define _lglss _gemdos #define _lgns _gemdos #define _lgp _gemdos #define _lgs _gemdos #define _lgscc _gemdos #define _lgsccc _gemdos #define _lgslp _gemdos #define _lgslq _gemdos #define _lgspl _gemdos #define _lgss _gemdos #define _lgu _gemdos #define _lgv _gemdos #define _pgl _gemdos #define _pgp _gemdos #define _pgv _gemdos #define _sgv _gemdos #define _ugv _gemdos #define _vgc _gemdos #define _vgls _gemdos #define _vgp _gemdos #define _lgrss _gemdos #define _vgs _gemdos #define _vgv _gemdos #endif /* GEMDOS bindings */ #define Pterm0() _vgv(0x0) #define Cconin() _lgv(0x1) #define Cconout(a) _vgs(0x2,a) #define Cauxin() _sgv(0x3) #define Cauxout(a) _vgs(0x4,a) #define Cprnout(a) _lgs(0x5,a) #define Crawio(a) _lgs(0x6,a) #define Crawcin() _lgv(0x7) #define Cnecin() _lgv(0x8) #define Cconws(a) _vgc(0x9,a) #define Cconrs(a) _vgp(0x0a,a) #define Cconis() _sgv(0x0b) #define Dsetdrv(a) _lgs(0x0e,a) #define Cconos() _sgv(0x10) #define Cprnos() _sgv(0x11) #define Cauxis() _sgv(0x12) #define Cauxos() _sgv(0x13) #define Dgetdrv() _sgv(0x19) #define Fsetdta(a) _vgp(0x1a,a) #define Super(a) _pgp(0x20,a) #define Tgetdate() _ugv(0x2a) #define Tsetdate(a) _lgu(0x2b,a) #define Tgettime() _ugv(0x2c) #define Tsettime(a) _lgu(0x2d,a) #define Fgetdta() _pgv(0x2f) #define Sversion() _ugv(0x30) #define Ptermres(a,b) _vgls(0x31,a,b) #define Dfree(a,b) _lgns(0x36,a,b) #define Dcreate(a) _lgc(0x39,a) #define Ddelete(a) _lgc(0x3a,a) #define Dsetpath(a) _lgc(0x3b,a) #define Fcreate(a,b) _lgcs(0x3c,a,b) #define Fopen(a,b) _lgcs(0x3d,a,b) #define Fclose(a) _lgs(0x3e,a) #define Fread(a,b,c) _lgslp(0x3f,a,b,c) #define Fwrite(a,b,c) _lgslq(0x40,a,b,c) #define Fdelete(a) _lgc(0x41,a) #define Fseek(a,b,c) _lglss(0x42,a,b,c) #define Fattrib(a,b,c) _lgcss(0x43,a,b,c) #define Fdup(a) _lgs(0x45,a) #define Fforce(a,b) _lgss(0x46,a,b) #define Dgetpath(a,b) _lgds(0x47,a,b) #define Malloc(a) _pgl(0x48,a) #define Mfree(a) _lgp(0x49,a) #define Mshrink(a,b) _lgspl(0x4a,0,a,b) #define Pexec(a,b,c,d) _lgsccc(0x4b,a,b,c,d) #define Pterm(a) _vgs(0x4c,a) #define Fsfirst(a,b) _lgcs(0x4e,a,b) #define Fsnext() _lgv(0x4f) #define Frename(a,b,c) _lgscc(0x56,a,b,c) #define Fdatime(a,b,c) _lgrss(0x57,a,b,c) #ifndef __NO_OSBIND_PRAGMAS void _vbp(int,void *); long _lbs(int,int); long _lbss(int,int,int); long _lbspsss(int,int,void *,int,int,int); long _lbspsssl(int,int,void *,int,int,int,long); void (*_fbsf(int,int,void (*)()))(); long _lbv(int); void *_pbs(int,int); unsigned long _mbv(int); #pragma inline _vbp((short),) {register D2,A2; "4e4d";} #pragma inline d0=_lbs((short),(short)) {register D2,A2; "4e4d";} #pragma inline d0=_lbss((short),(short),(short)) {register D2,A2; "4e4d";} #pragma inline d0=_lbspsss((short),(short),,(short),(short),(short)) {register D2,A2; "4e4d";} #pragma inline d0=_lbspsssl((short),(short),,(short),(short),(short),) {register D2,A2; "4e4d";} #pragma inline d0=_fbsf((short),(short),) {register D2,A2; "4e4d";} #pragma inline d0=_lbv((short)) {register D2,A2; "4e4d";} #pragma inline d0=_pbs((short),(short)) {register D2,A2; "4e4d";} #pragma inline d0=_mbv((short)) {register D2,A2; "4e4d";} #else #define _vbp _bios #define _lbs _bios #define _lbss _bios #define _lbspsss _bios #define _lbspsssl _bios #define _fbsf _bios #define _lbv _bios #define _pbs _bios #endif /* BIOS bindings */ #define Getmpb(a) _vbp(0,a) #define Bconstat(a) _lbs(1,a) #define Bconin(a) _lbs(2,a) #define Bconout(a,b) _lbss(3,a,b) #define Rwabs(a,b,c,d,e) _lbspsss(4,a,b,c,d,e) #define Lrwabs(a,b,c,d,e) _lbspsssl(4,a,b,c,-1,d,e) #define Setexc(a,b) _fbsf(5,a,b) #define Tickcal() _lbv(6) #define Getbpb(a) _pbs(7,a) #define Bcostat(a) _lbs(8,a) #define Mediach(a) _lbs(9,a) #define Drvmap() _mbv(10) #define Kbshift(a) _lbs(11,a) /* XBIOS bindings */ #ifndef __NO_OSBIND_PRAGMAS unsigned char _dxss(int,int,int); long _lxg(int,long (*)(void)); long _lxv(int); unsigned long _mxs(int,int,int,int,int,int,int); void *_pxs(int,int); void *_pxv(int); char **_rxccc(int,const char *,const char *,const char *); void **_rxv(int); short _sxpps(int,void *,void *,int,int,int,int,int); short _sxprsls(int,void *,short *,int,int,int,int,int,long,int); short _sxs(int,int); short _sxss(int,int,int); short _sxv(int); void _vxc(int,const char *); void _vxm(int,unsigned long); unsigned long _mxv(int); void _vxp(int,void *); void _vxplss(int,void *,long,int,int); void _vxpps(int,void *,void *,int); void _vxs(int,int); void _vxsf(int,void (*)(void)); void _vxsl(int,int,long); void _vxsp(int,int,void *); void _vxspf(int,int,void *,void (*)()); void _vxsssf(int,int,int,int,void (*)()); void _vxv(int); #pragma inline d0=_dxss((short),(short),(short)) {register d2,a2; "4e4e";} #pragma inline d0=_lxg((short),) {register d2,a2; "4e4e";} #pragma inline d0=_lxv((short)) {register d2,a2; "4e4e";} #pragma inline d0=_mxs((short),(short),(short),(short),(short),(short),(short)) {register d2,a2; "4e4e";} #pragma inline d0=_pxs((short),(short)) {register d2,a2; "4e4e";} #pragma inline d0=_pxv((short)) {register d2,a2; "4e4e";} #pragma inline d0=_rxccc((short),,,) {register d2,a2; "4e4e";} #pragma inline d0=_rxv((short)) {register d2,a2; "4e4e";} #pragma inline d0=_sxpps((short),,,(short),(short),(short),(short),(short)) {register d2,a2; "4e4e";} #pragma inline d0=_sxprsls((short),,,(short),(short),(short),(short),(short),,(short)) {register d2,a2; "4e4e";} #pragma inline d0=_sxs((short),(short)) {register d2,a2; "4e4e";} #pragma inline d0=_sxss((short),(short),(short)) {register d2,a2; "4e4e";} #pragma inline d0=_sxv((short)) {register d2,a2; "4e4e";} #pragma inline _vxc((short),) {register d2,a2; "4e4e";} #pragma inline _vxm((short),) {register d2,a2; "4e4e";} #pragma inline d0=_mxv((sPhort)) {register d2,a2; "4e4e";} #pragma inline _vxp((short),) {register d2,a2; "4e4e";} #pragma inline _vxplss((short),,,(short),(short)) {register d2,a2; "4e4e";} #pragma inline _vxpps((short),,,(short)) {register d2,a2; "4e4e";} #pragma inline _vxs((short),(short)) {register d2,a2; "4e4e";} #pragma inline _vxsf((short),) {register d2,a2; "4e4e";} #pragma inline _vxsl((short),(short),) {register d2,a2; "4e4e";} #pragma inline _vxsp((short),) {register d2,a2; "4e4e";} #pragma inline _vxspf((short),(short),,) {register d2,a2; "4e4e";} #pragma inline _vxsssf((short),(short),(short),) {register d2,a2; "4e4e";} #pragma inline _vxv((short)) {register d2,a2; "4e4e";} #else #define _dxss _xbios #define _lxg _xbios #define _lxv _xbios #define _mxs _xbios #define _pxs _xbios #define _pxv _xbios #define _rxccc _xbios #define _rxv _xbios #define _sxpps _xbios #define _sxprsls _xbios #define _sxs _xbios #define _sxss _xbios #define _sxv _xbios #define _vxc _xbios #define _vxm _xbios #define _mxv _xbios #define _vxp _xbios #define _vxplss _xbios #define _vxpps _xbios #define _vxs _xbios #define _vxsf _xbios #define _vxsl _xbios #define _vxsp _xbios #define _vxspf _xbios #define _vxsssf _xbios #define _vxv _xbios #endif #define Initmous(a,b,c) _vxspf(0,a,b,c) #define Ssbrk(a) _lxv(a) #define Physbase() _pxv(2) #define Logbase() _pxv(3) #define Getrez() _sxv(4) #define Setscreen(a,b,c) _vxpps(5,a,b,c) #define Setpallete(a) _vxp(6,a) #define Setpalette(a) _vxp(6,a) #define Setcolor(a,b) _sxss(7,a,b) #define Floprd(a,b,c,d,e,f,g) _sxpps(8,a,b,c,d,e,f,g) #define Flopwr(a,b,c,d,e,f,g) _sxpps(9,a,b,c,d,e,f,g) #define Flopfmt(a,b,c,d,e,f,g,h,i) _sxprsls(10,a,b,c,d,e,f,g,h,i) #define Midiws(a,b) _vxsp(12,a,b) #define Mfpint(a,b) _vxsf(13,a,b) #define Iorec(a) _pxs(14,a) #define Rsconf(a,b,c,d,e,f) _mxs(15,a,b,c,d,e,f) #define Keytbl(a,b,c) _rxccc(16,a,b,c) #define Random() _lxv(17) #define Prot/* * oserr.h - TOS specific error code information * * Copyright (c) 1990 HiSoft */ #ifndef _OSERR_H #define _OSERR_H #define E_OK 0 #define ERROR 1 #define EDRVNR 2 #define EUNCMD 3 #define E_CRC 4 #define EBADRQ 5 #define E_SEEK 6 #define EMEDIA 7 #define ESECNF 8 #define EPAPER 9 #define EWRITF 10 #define EREADF 11 #define EWRPRO 13 #define E_CHNG 14 #define EUNDEV 15 #define EBADSF 16 #define EOTHER 17 #define EINVFN 32 #define EFILNF 33 #define EPTHNF 34 #define ENHNDL 35 #define EACCDN 36 #define EIHNDL 37 #define ENSMEM 39 #define EIMBA 40 #define EDRIVE 46 #define ENSAME 48 #define ENMFIL 49 #define E_RANGE 64 #define EINTRN 65 #define EPLFMT 66 #define EGSBF 67 extern long volatile _OSERR; extern int os_nerr; extern char *os_errlist[]; #endif /* * portab.h - various portability definitions * * Started 29/11/89 Alex G. Kiernan * * Copyright (c) 1989 HiSoft */ #ifndef _PORTAB_H #define _PORTAB_H #if defined(__PLAIN_CHAR_UNSIGNED) #define UCHARA 1 #else #undef UCHARA #endif typedef signed char BYTE; typedef unsigned char UBYTE; typedef signed short WORD; typedef unsigned short UWORD; typedef signed long LONG; typedef unsigned long ULONG; typedef int BOOLEAN; #define TRUE (1) #define FALSE (0) #endif /* * setjmp.h - declarations for non-local jumps * * Started 11/11/89 Alex G. Kiernan * * Copyright (c) 1989 HiSoft */ #ifndef _SETJMP_H #define _SETJMP_H typedef long jmp_buf[15]; int __setjmp(jmp_buf); void longjmp(jmp_buf,int); #define setjmp(x) __setjmp(x) #endif }/* * signal.h - define macros and functions for signal handling * * Copyright (c) 1990 HiSoft */ #ifndef _SIGNAL_H #define _SIGNAL_H /* * * This header file contains definitions needed by the signal function. * */ /* * * NSIG supposedly defines the number of signals recognized. However, * since not all signals are actually implemented under GEMDOS, it actually * is the highest legal signal number plus one. * */ #define NSIG 9 #define SIG_MAX 8 /** * * The following symbols are the defined signals. * */ #define SIGABRT 1 /* Abnormal termination, abort() */ #define SIGFPE 2 /* Floating point exception */ #define SIGILL 3 /* Illegal instruction */ #define SIGINT 4 /* Interrupt from GEMDOS */ #define SIGSEGV 5 /* Segmentation violation */ #define SIGTERM 6 /* Termination request */ /* * * The following symbols are the special forms for the function pointer * argument. They specify certain standard actions that can be performed * when the signal occurs. * */ #define SIG_DFL (void (*)(int)) 0 /* default action */ #define SIG_IGN (void (*)(int)) 1 /* ignore the signal */ #define SIG_ERR (void (*)(int)) (-1) /* error return */ /* * * Function declarations * */ extern void (*signal(int,void (*)(int)))(int); extern int raise(int); extern void (*__sigfunc[NSIG])(int); typedef long sig_atomic_t; #endif ?/* * stdarg.h - ANSI variable argument mechanism * * Copyright (c) 1989 Lattice, Inc. */ #ifndef _STDARG_H #define _STDARG_H #ifndef _VA_LIST #define _VA_LIST typedef char *va_list; #endif #define va_start(a,b) (a=(va_list)(&b+1)) #define va_arg(a,b) *((b *)( (a+=sizeof(b))-sizeof(b) )) #define va_end(a) #endif e NULL ((void *)0) #endif /* * stddef.h - standard definitions file * * Started 30/8/89 Alex G. Kiernan, based on Lattice source. * * Copyright (c) 1989 HiSoft and Lattice, Inc. */ #ifndef _STDDEF_H #define _STDDEF_H #ifndef _SIZE_T #define _SIZE_T typedef unsigned long int size_t; #endif typedef long int ptrdiff_t; #ifndef _WCHAR_T #define _WCHAR_T typedef unsigned char wchar_t; #endif #define offsetof(type,memb) (size_t)&((( type *)0x10)->memb)-(size_t)(( type *)0x10) /*#define offsetof(type,memb) (size_t)&((( type *)0L)->memb)*/ #define NULL ((void *)0) #endif /* * stdio.h - level 2 I/O interface file * * Started 30/8/89 Alex G. Kiernan, based on Lattice source * * Copyright (c) 1989 HiSoft and Lattice, Inc. */ #ifndef _STDIO_H #define _STDIO_H #ifndef _SIZE_T #define _SIZE_T typedef unsigned long int size_t; #endif __regargs long _CXCERR(long); /* always __regargs for efficiency */ #ifndef _VA_LIST #define _VA_LIST typedef char *va_list; #endif typedef struct _iobuf FILE; typedef unsigned long fpos_t; #define NULL ((void *)0) #define _BUFSIZ 512 /* standard buffer size */ #define BUFSIZ _BUFSIZ /* standard buffer size */ #define OPEN_MAX 20 /* maximum number of files */ #define _NFILE OPEN_MAX /* maximum number of files */ #define FOPEN_MAX OPEN_MAX /* maximum number of files */ #define FILENAME_MAX 128 /* FMSIZE */ #define L_tmpnam 9 /* maximum tmpnam filename length */ #define TMP_MAX 17576 /* Guaranteed unique temp names */ /** * * Definitions associated with _iobuf._flag * **/ #define _IOFBF 0 /* fully buffered (for setvbuf) */ #define _IOREAD 1 /* read flag */ #define _IOWRT 2 /* write flag */ #define _IONBF 4 /* non-buffered flag */ #define _IOMYBUF 8 /* private buffer flag */ #define _IOEOF 16 /* end-of-file flag */ #define _IOERR 32 /* error flag */ #define _IOLBF 64 /* line-buffered flag */ #define _IORW 128 /* read-write (update) flag */ #define _IOAPP 0x4000 /* append flag */ #define _IOXLAT 0x8000 /* translation flag */ #define EOF (-1) /* end-of-file code */ #define SEEK_SET 0 /* Seek from beginning of file */ #define SEEK_CUR 1 /* Seek from current file position */ #define SEEK_END 2 /* Seek from end of file */ struct _iobuf { struct _iobuf *_next; unsigned char *_ptr; /* current buffer pointer */ int _rcnt; /* current byte count for reading */ int _wcnt; /* current byte count for writing */ unsigned char *_base; /* base address of I/O buffer */ int _size; /* size of buffer */ int _flag; /* control flags */ int _file; /* file descriptor */ unsigned char _cbuff; /* single char buffer */ }; extern struct _iobuf _iob[]; #define stdin (&_iob[0]) /* standard input file pointer */ #define stdout (&_iob[1]) /* standard output file pointer */ #define stderr (&_iob[2]) /* standard error file pointer */ #define stdaux (&_iob[3]) /* standard auxiliary file pointer */ #define stdprt (&_iob[4]) /* standard printer file pointer */ /* * Prototypes for ANSI standard functions. */ #undef rename int rename(const char *,const char *); #ifndef __NO_STDIO_DEFINES long _lgscc(int,int,const char *,const char *); #pragma inline d0=_lgscc((short),(short),,) {register d2,a2; "4e41";} #define rename(x,y) _CXCERR(_lgscc(0x56,0,x,y)) #endif #undef remove int remove(const char *); #ifndef __NO_STDIO_DEFINES long _lgc(int,const char *); #pragma inline d0=_lgc((short),) {register d2,a2; "4e41";} #define remove(x) _CXCERR(_lgc(0x41,x)) #endif FILE *tmpfile(void); char *tmpnam(char *s); int fclose(FILE *); int fflush(FILE *); FILE *fopen(const char *, const char *); FILE *freopen(const char *, const char *, FILE *); void setbuf(FILE *, char *); int setvbuf(FILE *, char *, int, size_t); int fprintf(FILE *, const char *, ...); int fscanf(FILE *, const char *, ...); int printf(const char *, ...); int lprintf(const char *, ...); int scanf(const char *, ...); int sprintf(char *, const char *, ...); int sscanf(const char *, const char *, ...); int vfprintf(FILE *, const char *, va_list); int vprintf(const char *, va_list); int vsprintf(char *, const char *, va_list); int __builtin_printf(const char *, ...); #define printf __builtin_printf int fgetc(FILE *); char *fgets(char *, int, FILE *); int fputc(int, FILE *); int fputs(const char *, FILE *); int getc(FILE *); #define getc(p) (--(p)->_rcnt>=0 ? *(p)->_ptr++ : fgetc(p)) int getchar(void); #define getchar() getc(stdin) char *gets(char *); int putc(int, FILE *); #define putc(c,p) (--(p)->_wcnt>=0 ? *(p)->_ptr++=(c) : fputc(c,p)) int putchar(int); #define putchar(c) putc(c,stdout) int puts(const char *); int ungetc(int, FILE *); size_t fread(void *, size_t, size_t, FILE *); size_t fwrite(const void *, size_t, size_t, FILE *); int fgetpos(FILE *, fpos_t *); int fseek(FILE *, long int, int); int fsetpos(FILE *, const fpos_t *); long int ftell(FILE *); void rewind(FILE *); #ifndef __NO_STDIO_DEFINES #define rewind(p) fseek(p, 0L, 0) #endif void clearerr(FILE *); #define clearerr(p) ((p)->_flag &= ~(_IOERR | _IOEOF)) int feof(FILE *); #define feof(p) (((p)->_flag & _IOEOF) != 0) int ferror(FILE *); #define ferror(p) (((p)->_flag & _IOERR) != 0) void perror(const char *); /* * Prototypes for Non-ANSI functions. */ int fcloseall(void); FILE *fdopen(int, const char *); int fgetchar(void); int fileno(FILE *); int flushall(void); void fmode(FILE *, int); __stdargs int _writes(char *); int _tinyprintf(char *, ...); int fputchar(int); int setnbf(FILE *); int __flushbuff(int, FILE *); int access(const char *, int); int chdir(const char *); int chmod(const char *, int); char *getcwd(char *, int); int mkdir(const char *); int rmdir(const char *); FILE *fopene(const char *, const char *,char *); FILE *popen(const char *,const char *); int pclose(FILE *); #undef unlink int unlink(const char *); #ifndef __NO_STDIO_DEFINES #define unlink remove #endif char *mktemp(char *s); short fputw(short,FILE *); long fputl(long,FILE *); short fgetw(FILE *); long fgetl(FILE *); #define clrerr clearerr #define fileno(p) ((p)->_file) #define _flsbf __flushbuff #define _getbf __getbuff int _getbf(FILE *); extern unsigned long __fmask; extern int _fmode; extern int _bufsiz; /* default file buffer size */ #endif '/* * stdlib.h - general utilities and defines * * Started 30/8/89 Alex G. Kiernan, based on Lattice source * * Copyright (c) 1989 HiSoft and Lattice, Inc. */ #ifndef _STDLIB_H #define _STDLIB_H #ifndef _SIZE_T #define _SIZE_T typedef unsigned long int size_t; #endif #ifndef _WCHAR_T #define _WCHAR_T typedef unsigned int wchar_t; #endif #define MB_CUR_MAX __mb_cur_max extern char __mb_cur_max; typedef struct { int quot; int rem; } div_t; typedef struct { long int quot; long int rem; } ldiv_t; void *malloc(size_t); void *calloc(size_t,size_t); void *realloc(void *, size_t); void free(void *); void *getml(size_t); int rlsml(void *, size_t); size_t sizmem(void); size_t chkml(void); int bldmem(int); void *getmem(unsigned); int rlsmem(void *, unsigned); void *alloca(size_t); extern size_t _stkdelta; /* stack/data area separation chicken factor */ void *sbrk(unsigned); void *lsbrk(long); int chdir(const char *); int chmod(const char *, int); char *getcwd(const char *, int); int mkdir(const char *); int rmdir(const char *); void qsort(void *, size_t, size_t, int (*)(const void *, const void *)); void dqsort(double *,size_t); void fqsort(float *,size_t); void lqsort(long *,size_t); void sqsort(short *,size_t); void tqsort(char **,size_t); int mblen(const char *,size_t); size_t mbstowcs(wchar_t *, const char *, size_t); int mbtowc(wchar_t *, const char *, size_t); size_t wcstombs(char *, const wchar_t *, size_t); int wctomb(char *, wchar_t); void exit(int); void abort(void); int atoi(const char *); double atof(const char *); long int atol(const char *); char *getenv(const char *); void _exit(int); void _XCEXIT(int); char *argopt(int, char *[], char *, int *, char *); void *bsearch(const void *, const void *, size_t, size_t, int (*)(const void *, const void *)); void *lsearch(const void *, void *, size_t *, size_t, int (*)(const void *, const void *)); void *lfind(const void *, const void *, const size_t *, size_t, int (*)(const void *, const void *)); int getpid(void); int getopt(int argc, const char *argv[], const char *optstring); extern int optopt,opterr,optind; extern char *optarg; int system(const char *); size_t _hash(const char *); void swab(const void *,void *,size_t); #undef abs int abs(int); int __builtin_abs(int); #define abs(i) __builtin_abs(i) #ifndef min int min(int,int); int __builtin_min(int,int); #define min(a,b) __builtin_min(a,b) #endif #ifndef max int max(int,int); int __builtin_max(int,int); #define max(a,b) __builtin_max(a,b) #endif long atol(char *); char *ecvt(double, int, int *, int *); char *fcvt(double, int, int *, int *); char *gcvt(double, int, char *); long getfnl(const char *, char *, size_t, int); extern int iabs(int); extern long labs(long); int onexit(int(*)(int)); int putenv(char *); int rand(void); int rmvenv(const char *); void srand(unsigned int); double strtod(const char *,const char **); long int strtol(const char *, char **, int); unsigned long int strtoul(const char *,char **,int); long int utpack(const char *); void utunpk(long int, char *); int atexit(void (* )(void)); div_t div(int, int); ldiv_t ldiv(long int, long int); unsigned long _lrotl(unsigned long,int); #pragma inline d0=_lrotl(D0,D1) {"e3b8";} unsigned short _rotl(unsigned short,int); #pragma inline d0=_rotl(D0,D1) {"e378";} unsigned long _lrotr(unsigned long,int); #pragma inline d0=_lrotr(D0,D1) {"e2b8";} unsigned short _rotr(unsigned short,int); #pragma inline d0=_rotr(D0,D1) {"e278";} int forkl(const char *,...); int forkle(const char *,...); int forklp(const char *,...); int forklpe(const char *,...); int forkv(const char *,const char **); int forkve(const char *,const char **,const char **); int forkvp(const char *,const char **); int forkvpe(const char *,const char **,const char **); int wait(void); int _fork(const char *,const char **,const char **); #define EXIT_SUCCESS 0 #define EXIT_FAILURE 3 #define RSTRING H iyrSTRINGS H V~TIME H td7fVARARGS H M|8VDI H tLSYS  Z~E/* * string.h - string and memory operations interface file * * Started 30/8/89 Alex G. Kiernan, based on Lattice source * * Copyright (c) 1989 HiSoft and Lattice, Inc. */ #ifndef _STRING_H #define _STRING_H #ifndef _SIZE_T #define _SIZE_T typedef unsigned long int size_t; #endif extern char _SLASH; /* path separator character */ /* * * External definitions for string services * */ char *strcat(char *, const char *); char *strchr(const char *, int); int strcmp(const char *, const char *); char *strcpy(char *, const char *); size_t strcspn(const char *, const char *); size_t strspn(const char *, const char *); size_t strlen(const char *); char *strncat(char *, const char *, size_t); int strncmp(const char *, const char *, size_t); char *strncpy(char *, const char *, size_t); char *strpbrk(const char *, const char *); char *strrchr(const char *, int); char *strstr(const char *, const char *); char *strtok(char *, const char *); char *strerror(int); int strcoll(const char *, const char *); size_t strxfrm(char *, const char *, size_t); size_t __builtin_strlen(const char *); char *__builtin_strcpy(char *, const char *); int __builtin_strcmp(const char *, const char *); #define strlen(x) __builtin_strlen(x) #define strcpy(x,y) __builtin_strcpy(x,y) #define strcmp(x,y) __builtin_strcmp(x,y) #if !defined __STDC__ || __STDC__ != 1 size_t stcarg(const char *, const char *); size_t stccpy(char *to, const char *from, size_t length); char *stpcpy(char *, const char *); char *strdup(const char *); void strins(char *, const char *); char *strnset(char *, int, size_t); char *strrev(char *); size_t stcis(const char *, const char *); size_t stcisn(const char *, const char *); size_t stcpm(const char *, const char *, char **); size_t stcpma(const char *, const char *); char *stpblk(const char *); char *stpbrk(const char *, const char *); char *stpchr(const char *, int); char *stpsym(const char *, char *, size_t); char *stpchrn(const char *, int); char *stptok(const char *, char *, size_t, const char *); long strbpl(char **, size_t, const char *); int stcgfe(char *, char *); int stcgfn(char *, char *); int stcd_i(const char *, int *); int stcd_l(const char *, long *); int stch_i(const char *, int *); int stch_l(const char *, long *); int stci_d(const char *, int); int stci_h(const char *, int); int stci_o(const char *, int); int stcl_d(const char *, long); int stcl_h(const char *, long); int stcl_o(const char *, long); int stco_i(con st char *, int *); int stco_l(const char *, long *); int stcsma(char *, char *); int stcu_d(char *, unsigned); int stcul_d(char *, unsigned long); size_t stclen(const char *); #define stclen(a) strlen(a) char *stpdate(char *, int, char *); char *stptime(char *, int, char *); int strmid(const char *, char *, size_t, size_t); char *strlwr(char *); void strmfe(char *, const char *, const char *); void strmfn(char *, const char *, const char *, const char *, const char *); void strmfp(char *, const char *, const char *); int stcgfp(char *, const char *); int strnicmp(const char *, const char *, size_t); int stricmp(const char *, const char *); char *strset(char *, int); void strsfn(const char *, char *, char *, char *, char *); char *strupr(char *); int stspfp(char *, int *); void strsrt(char *[], size_t); #define strcmpi stricmp /* For Microsoft compatibility */ #endif /* * * External definitions for memory block services * */ void *memchr(const void *, int, size_t); int memcmp(const void *, const void *, size_t); void *memcpy(void *, const void *, size_t); void *memmove(void *, const void *, size_t); void *memset(void *, int, size_t); void *__builtin_memset(void *, int, size_t); int __builtin_memcmp(const void *, const void *, size_t); void *__builtin_memcpy(void *, const void *, size_t); #define memset(x,y,z) __builtin_memset(x,y,z) #define memcmp(x,y,z) __builtin_memcmp(x,y,z) #define memcpy(x,y,z) __builtin_memcpy(x,y,z) #if !defined __STDC__ || __STDC__ != 1 void *memccpy(void *, const void *, int, size_t); void *memswp(void *, void *, size_t); void *memrep(void *, void *, size_t, size_t); void setmem(void *, unsigned, int); void movmem(void *, void *, unsigned); void repmem(void *, void *, unsigned, unsigned); void swmem(void *, void *, unsigned); #endif #define NULL ((void *)0) #endif /* * strings.h - portability header file * * Started 2/12/89 Alex G. Kiernan * * Copyright (c) 1989 HiSoft */ #include n/* * time.h - defines for date and time * * Started 6/9/89 Alex G. Kiernan, based on Lattice source * * Copyright (c) 1989 HiSoft and Lattice, Inc. */ #ifndef _TIME_H #define _TIME_H #define NULL ((void *)0) #ifndef _SIZE_T #define _SIZE_T typedef unsigned long size_t; #endif #ifndef _TIME_T #define _TIME_T typedef long time_t; #endif /* * * type used to hold clock ticks returned by clock() * */ typedef long clock_t; #define CLOCKS_PER_SEC 200 /* clock() granularity */ #define CLK_TCK CLOCKS_PER_SEC /* * * This structure contains the unpacked time as returned by "gmtime". * */ struct tm { int tm_sec, /* seconds after the minute */ tm_min, /* minutes after the hour */ tm_hour, /* hours since midnight */ tm_mday, /* day of the month */ tm_mon, /* months since January */ tm_year, /* years since 1900 */ tm_wday, /* days since Sunday */ tm_yday, /* days since January 1 */ tm_isdst; /* Daylight Savings Time flag */ }; /*  * * ANSI time functions. * */ clock_t clock(void); double difftime(time_t, time_t); time_t mktime(struct tm *); time_t time(time_t *); char *asctime(const struct tm *); char *ctime(const time_t *); struct tm *gmtime(const time_t *); struct tm *localtime(const time_t *); size_t strftime(char *, size_t, const char *, const struct tm *); #if !defined __STDC__ || __STDC__!=1 /* * * Lattice time functions * */ void getclk(unsigned char *); int chgclk(unsigned char *); void utunpk(long, char *); long utpack(const char *); int utime(const char *,const struct utimbuf *); int stime(const time_t *); #endif void _tzset(void); /* * Lattice external variables */ extern int __daylight; extern long __timezone; extern char *__tzname[2]; extern char __tzstn[4]; extern char __tzdtn[4]; extern char *_TZ; #endif /* * varargs.h - UNIX variable argument mechanism * * Started 3/12/89 Alex G. Kiernan * * Copyright (c) 1989 HiSoft */ #ifndef _VARARGS_H #define _VARARGS_H #ifndef _VA_LIST #define _VA_LIST typedef char *va_list; #endif #define va_dcl va_list va_alist; #define va_start(a) a=(va_list)&va_alist #define va_arg(a,b) ((b *)(a+=sizeof(b)))[-1] #define va_end(ap) #endif e NULL ((void *)0) #endif U/* * vdi.h - vdi interface header file * * Started 16/9/89 Alex G. Kiernan * * Copyright (c) 1989 HiSoft */ #ifndef _VDI_H #define _VDI_H __regargs int _VDIif(unsigned long,unsigned long); extern short *_VDIpb[5]; extern short _VDIcontrl[]; /* default 11 */ extern short _VDIintin[]; /* default 128 */ extern short _VDIintout[]; /* default 128 */ extern short _VDIptsin[]; /* default 8 */ extern short _VDIptsout[]; /* default 10 */ /* Control library definitions */ void v_opnwk(short *,short *,short *); void v_clswk(int); void v_opnvwk(short *,short *,short *); void v_clsvwk(int); void v_clrwk(int); void v_updwk(int); int vst_load_fonts(int,int); void vst_unload_fonts(int,int); void vs_clip(int,int,short *); /* Output library definitions */ void v_pline(int,int,short *); void v_pmarker(int,int,short *); void v_gtext(int,int,int,const char *); void v_fillarea(int,int,short *); void v_cellarray(int,short *,int,int,int,int,short *); void v_contourfill(int,int,int,int); void vr_recfl(int,short *); void v_bar(int,short *); void v_arc(int,int,int,int,int,int); void v_pieslice(int,int,int,int,int,int); void v_circle(int,int,int,int); void v_ellarc(int,int,int,int,int,int,int); void v_ellpie(int,int,int,int,int,int,int); void v_ellipse(int,int,int,int,int); void v_rbox(int,short *); void v_rfbox(int,short *); void v_justified(int,int,int,const char *,int,int,int); /* Attribute library definitions */ #define MD_REPLACE 1 #define MD_TRANS 2 #define MD_XOR 3 #define MD_ERASE 4 #define FIS_HOLLOW 0 #define HOLLOW FIS_HOLLOW #define FIS_SOLID 1 #define SOLID FIS_SOLID #define FIS_PATTERN 2 #define PATTERN FIS_PATTERN #define FIS_HATCH 3 #define HATCH FIS_HATCH #define FIS_USER 4 #define UDFILLSTYLE FIS_USER #define ALL_WHITE 0 /* bit blt rules */ #define S_AND_D 1 #define S_AND_NOTD 2 #define S_ONLY 3 #define NOTS_AND_D 4 #define D_ONLY 5 #define S_XOR_D 6 #define S_OR_D 7 #define NOT_SORD 8 #define NOT_SXORD 9 #define NOT_D 10 #define S_OR_NOTD 11 #define NOT_S 12 #define NOTS_OR_D 13 #define NOT_SANDD 14 #define ALL_BLACK 15 /*#define SOLID 1*/ /* polyline line styles */ #define LDASHED 2 #define LONGDASH LDASHED #define DOTTED 3 #define DOT DOTTED #define DASHDOT 4 #define DASHED 5 #define DASH DASHED #define DASHDOTDOT 6 #define DASH2DOT DASHDOTDOT #define USERLINE 7 #define SQUARE 0 #define SQUARED SQUARE #define ARROWED 1 #define ROUND 2 #define ROUNDED ROUND #define DOTS 3 /* fill patterns */ #define GRID 6 #define BRICKS 9 #define WEAVE 16 #define THICKENED 0x0001 /* text effects */ #define SHADED 0x0002 #define SKEWED 0x0004 #define UNDERLINED 0x0008 #define OUTLINE 0x0010 #define SHADOW 0x0020 int vswr_mode(int,int); void vs_color(int,int,short *); int vsl_type(int,int); void vsl_udsty(int,int); int vsl_width(int,int); int vsl_color(int,int); void vsl_ends(int,int,int); int vsm_type(int,int); int vsm_height(int,int); int vsm_color(int,int); void vst_height(int,int,short *,short *,short *,short *); int vst_point(int,int,short *,short *,short *,short *); int vst_rotation(int,int); int vst_font(int,int); int vst_color(int,int); int vst_effects(int,int); void vst_alignment(int,int,int,short *,short *); int vsf_interior(int,int); int vsf_style(int,int); int vsf_color(int,int); int vsf_perimeter(int,int); void vsf_udpat(int,short *,int); /* Raster library definitions */ typedef struct fdbstr { void *fd_addr; short fd_w; short fd_h; short fd_wdwidth; short fd_stand; short fd_nplanes; short fd_r1; short fd_r2; short fd_r3; } MFDB, FDB; void vro_cpyfm(int,int,short *,MFDB *,MFDB *); void vrt_cpyfm(int,int,short *,MFDB *,MFDB *,short *); void vr_trnfm(int,MFDB *,MFDB *); void v_get_pixel(int,int,int,short *,short *); /* Input library definitions */ typedef struct mfstr { short mf_xhot; short mf_yhot; short mf_nplanes; short mf_fg; short mf_bg; short mf_mask[16]; short mf_data[16]; } MFORM; int vsin_mode(int,int,int); void vrq_locator(int,int,int,short *,short *,short *); int vsm_locator(int,int,int,short *,short *,short *); void vrq_valuator(int,int,short *,short *); void vsm_valuator(int,int,short *,short *,short *); void vrq_choice(int,int,short *); int vsm_choice(int,short *); void vrq_string(int,int,int,short *,char *); int vsm_string(int,int,int,short *,char *); void vsc_form(int,MFORM *); void vex_timv(int,int (*)(void),int (**)(void),short *); void v_show_c(int,int); void v_hide_c(int); void vq_mouse(int,short *,short *,short *); void vex_butv(int,int __regargs (*)(short),int __regargs (**)(short)); void vex_motv(int,int __regargs (*)(short,short),int __regargs (**)(short,short)); void vex_curv(int,int __regargs (*)(short,short),int __regargs (**)(short,short)); void vq_key_s(int,short *); /* Inquire library definitions */ void vq_extnd(int,int,short *); void vq_color(int,int,int,short *); void vql_attributes(int,short *); void vqm_attributes(int,short *); void vqf_attributes(int,short *); void vqt_attributes(int,short *); void vqt_extent(int,const char *,short *); int vqt_width(int,int,short *,short *,short *); int vqt_name(int,int,char *); void vq_cellarray(int,short *,int,int,short *,short *,short *,short *); void vqin_mode(int,int,short *); void vqt_fontinfo(int,short *,short *,short *,short *,short *); /* Escape library definitions */ void vq_chcells(int,short *,short *); void v_exit_cur(int); void v_enter_cur(int); void v_curup(int); void v_curdown(int); void v_curright(int); void v_curleft(int); void v_curhome(int); void v_eeos(int); void v_eeol(int); void vs_curaddress(int,int,int); void v_curtext(int,const char *); void v_rvon(int); void v_rvoff(int); void vq_curaddress(int,short *,short *); int vq_tabstatus(int); void v_hardcopy(int); void v_dspcur(int,int,int); void v_rmcur(int); void v_form_adv(int); void v_output_window(int,short *); void v_clear_disp_list(int); void v_bit_image(int,const char *,int,int,int,int,int,short *); void vq_scan(int,short *,short *,short *,short *,short *); void v_alpha_text(int,const char *); int vs_palette(int,int); void vqp_films(int,char *); void vqp_state(int,short *,short *,short *,short *,short *,short *); void vsp_state(int,int,int,int,int,int,short *); void vsp_save(int); void vsp_message(int); int vqp_error(int); void v_meta_extents(int,int,int,int,int); void v_write_meta(int,int,short *,int,short *); void vm_filename(int,const char *); /* Metafile sub-opcodes for GEM output */ void vm_pagesize(int,int,int); void vm_coords(int,int,int,int,int); /* Atari specific escape library defintions */ void v_offset(int,int); void v_font(int,void *); /* GDOS detection function */ int vq_gdos(void); #endif < d.  [~..  H}STAT H Uv:TYPES H ui/* * stat.h - UNIX stat and fstat functions * * Started 22/11/89 Alex G. Kiernan * * Copyright (c) 1989 HiSoft */ #ifndef _STAT_H #define _STAT_H #ifndef _TIME_T #define _TIME_T typedef long time_t; #endif struct stat { dev_t st_dev; /* device */ ino_t st_ino; /* inode number - not used */ unsigned short st_mode; /* mode */ short st_nlink; /* number of links == 1 */ short st_uid; /* user id == pid */ short st_gid; /* group id == pid */ dev_t st_rdev; /* real device */ off_t st_size; /* file size */ time_t st_atime; /* access time */ time_t st_mtime; /* modified time */ time_t st_ctime; /* changed time */ }; #define S_IJRON 0x01 /* read only */ #define S_IJHID 0x02 /* hidden */ #define S_IJSYS 0x04 /* system */ #define S_IJVOL 0x08 /* label */ #define S_IJDIR 0x10 /* directory */ #define S_IJWAC 0x20 /* archive */ typedef struct { char d_resvd[21]; char d_fattr; /* File attributes */ long d_tandd; /* Time and date words */ long d_fsize; /* File size */ char d_fname[14]; /* File name */ } DMABUFFER; #define S_IFMT 0170 #define S_IFDIR 0040 #define S_IFCHR 0020 #define S_IFREG 010 #define S_IREAD 0400 #define S_IWRITE 0200 #define S_IEXEC 0100 #define S_IRWXU 00700 /* read, write, execute - user */ #define S_IRUSR 00400 /* read permission - user */ #define S_IWUSR 00200 /* write permission - user */ #define S_IXUSR 00100 /* execute permission - user */ #define S_IRWXG 00070 /* read, write, execute - group */ #define S_IRGRP 00040 /* read permission - group */ #define S_IWGRP 00020 /* write permission - group */ #define S_IXGRP 00010 /* execute permission - group */ #define S_IRWXO 07 /* read, write, execute - other */ #define S_IROTH 04 /* read permission - other */ #define S_IWOTH 02 /* write permission - other */ #define S_IXOTH 01 /* execute permission - other */ int fstat(int, struct stat *); int stat(const char *, struct stat *); #endif /* * types.h - UNIX types header file * * Started 22/11/89 Alex G. Kiernan * * Copyright (c) 1989 HiSoft */ #ifndef _TYPES_H #define _TYPES_H typedef unsigned short ino_t; typedef short dev_t; typedef long off_t; typedef unsigned char unchar; typedef unsigned short ushort; typedef unsigned int uint; typedef unsigned long ulong; #ifndef _TIME_T #define _TIME_T typedef long time_t; #endif struct utimbuf { time_t actime; /* access time - ignored */ time_t modtime; /* new Wlast mod time */ }; #ifndef _SIZE_T #define _SIZE_T typedef unsigned long size_t; #endif #endif  NVe/0. HA////Hx /NO0.2. AgrHp////Hx /NO0. HЀAx=pA=pA204.ASB=BA200.AS@=@0,HHnHx/N$.N^NuNVeH/0.. ,.*. .JkJj~0,HV(.l(JgJf6HnHnHnHnHxBNO>.H8.H<.H:.H-Dp(n,n*/////.NO(Jo ЀA1*BHx/@$NHxNO . g" ."HAHt////Hx/NO. g" . "HAHt////Hx/NO///.//N /0AxCEG./ / /Hx/N0,HHnHnHxB/N.aBNp.//Hn//aOPBHxNPO`x L N^NueH./JoP ЀA*HJUg@BUBHxNHxN.NO ,Jg /NXO,BNBHxNPO L NuNVeH..Jo,܆AJphfp`/a0,HHx/N0,HB/NOAx=phA=phA00h2.@SA=AA00h2.@SA=A0,HHn/N0,HHx/Np.//apLN^NuNVeH!0. J@oT.HއAJpxgDH/a.0,HA(20xHAP40xH. ///NO0,APpxp`pLN^NuNVeH!0. J@oP.HއAJpxg@Ax00xH2,4.ԀA(1xA00xH2,4.ԀAP1xp`pLN^NuNVe/..JkZ ЀAJpgLHnHnHnHnHx/N2.H n 2.H n 2.H n 2.H n `p..N^NueH~K`p*Uf/aLXORTpmL NuNVe=n =n=n=n0,HHnHx/NN^NuNVe/..plJJoFBHxNHxNHnHnHnHn//HxNHxNBHxNO0`HnHnHnHnNO0.H n 0.H n 0.H.N^NuNVeH*n&n~ gJ f g~JgJg JgJfp` | rg BHxNPOA/Hn//HnHnp//Hn//////////r////NO\SgSgrg0`0.H n |`n0.H n 0.H n |`R0.r Af, gJ g0.H*0.H n |`&/ NXO` g6|`7hhTp m|Jg& rg BHxNPO L(N^NuxbZD:ZF<2drh^__base z> r__xcovf ~B $v _wind_get(_wind_setN_handle^~n _vs_clip_gl_hcharl_wind_createP_graf_mousebr^x_wind_update<_wind_open_vst_alignment0_wind_close_wind_delete_vsf_interior_vsf_color*_vr_recflz_v_gtext_gl_wcharN_v_plinen_evnt_button_graf_mkstate_evnt_multi_select_menu*FNVe0.HrN".Ҁp Ҁ A(gp`pN^NuNVe0.HrN".Ҁp Ҁ0. APN^NuNVe0.HrN".Ҁp Ҁ0.F@ APN^NuNVe0.HHx//.aN^NuNVe0.HHx//.aN^NuNVe/0.H n"HT/ ///.N0.HrN".Ҁ tЂ @"n3PpҀ A3P$.N^NuNVeH0Hn/. /.a0.H2.H4.H6.H.///B/. /.NL N^NuNVe .=@". =AЮS=@ҮS=A0,HHnHx/NN^NuNVeH8Hx,N"t‚&x?ƄЀ.//Hl/.N .LN^NuNVeH0Hx*N"t‚$văvvPЃ.//Hl/.N .L N^NueH*o./,/0Hm00-Hm&0-H2HҀn0-H2-HҀnp`pL NueH/*o &o$02@nH`H"(0+2-@nH`H"*0-H2HҀ.0+H2HҀ,o ` ,0-H2-HҀ0+H4+HԀ.n" 6 7@ 7@7AL(NuNVe . n0 .1@ .1@ .1@N^NuNVe0. HHn/HxN .N^NuNVe0. HHn/BN .N^NuNVe0.HrN".Ҁp Ҁ"A Q N^NuNVe0.HrN".Ҁp Ҁ A N^NuNVe/.aJ.HxNN^NuNVeH8HlHlHlHl/.N0,H2,H4,H6,H.///aBHxN0,H2,H4,H6,HHlHl////NBHxN0,hH2,H4,H6,H.///x/////NO`0,H2,H4,H6,H////Hx B/.NLN^NueH8BHxN0,H2,H4,H6,HHlHl////NBHxN0,H2,H4,H6,H.///a0,H2,H4,H6,H.///x////HxNOPLNu\ z>82, |__basedpN$xv(<j<__xcovfhtR(|z,@n@ __CXM224 zL_objc_offset_objc_drawV_handle_vs_clip΃_gemdos8_sprintfd_rsrc_gaddrƒ_form_alertd_form_center_graf_mousev_mem_mfdbچ_scr_mfdbރ_copy_screen_form_dial$_xwork_ywork_wwork_hwork%02d:%02d:%02d%02d/%02d/%02deH*o&o~`* SJfL(NuNVeH#..,.JfJf , JkJjp`)G p)@"t҂)A ҇҆)ARpN/NXO|)@` lCz/ /a\POp܀p`m,, X rN.`( l  rNCz/ /aPORpހ m . l!@T/N l1@\)@ , rN"! p", X.//)@$N , "XZ.//,N , "Z\.//,N , \LN^NuNVeH7Jfp`Jf , l1@D~&H`  fz|7|0+rAgh l*H/H0-Ho `0-H,0 l*H  fR 7@*o ;@0 l*H  f0,2+7A0,2+7A0+H2,4<kԀ7B0+H2,4<kԀ7BR mp)@Hx/,NPO,., \z ڬ rN l*H`p:;@;@Rm , rN", $Z l&18\1z1|"1 L(N^NueJgJfp` B/,NPONuNVeH8Jg , n ,$ nJgp` ,$rNr l1`1b1d1 fr1j1h$.!l&,1p1r//@/CN l"/1tHѬ1v ,$XR$.Hx/NO , r/@ N lp"/ t111t1v1 1 ! (/T1111 , XR ///)ANB ,$VLN^NuNVe/JgJf ,S", op` , rN lpr1111r1 1 $.! 1",1R//@N l"/11 , R ./,/N ,rN", l1 , S$.N^NueH./ A g mp`, rN l*Hpmgp`m p0- rL NueH./ Aj g mp`4 rN l*H0-rAg r Agp`m p0- rL NueH./A g mp`J rN, l"H*Ip mgp`*- VDHH///NO p l00h rL NuVj6"rLD@6,&"|xpf`xrnhd^B60&ldVN@8,xpf`NHB__base  ZR(.__xcovf ^V,2__CXM22_allocate__CXM33 0<_strlen _objc_add2thR<_gl_wcharF8_gl_hcharx\_menu_barF_menu_tnormal`s- Acc 1 Acc 2 Acc 3 Acc 4 Acc 5 Acc 6 ".:FR PP   P       vrnjfb^ NVe/.HxHNN^Nue/./op` A@ 0.NuNVe ,r(mp` ,AB".A!RR/@pN/ar oCD"#r @01A1A1|r1A1| !| 1A1A2,H .N1@0,H". N1@ ,N^NuNVeH..Sp(lJkA*H RAxmp` AD&HrorN S"Hi rN Sp01@1@1|1| Bh .!@ 2,H . N1@0,H".N1@/./HN2,HN o1@1l.B/N L(N^NuNVeH..Sp(lJk,A&HR.Ahop`AD*Hpo rN U"Hi rN Up01@1@1|p Ю1@Bh .!@ 2,H . N1@0,H".N1@/./HN2,HN o1@1l.B/N L(N^NuNVeH..,.*. Sp(l"Jk(ARHA.0HAHop`Tpo rNAD pH"Hi A 0HrNAD pH*HHxaXO&@p:;@;@Jgp`p M1@1| Bh !K 0,H". N1@0,H".N1@*n/ /H(NXO2,HTN o$1@1l&A'HA'HJVDHHЀV7@ 7|7|Jkpoz 7@BkJkpo| D7@/ NR7@7|A.HBAD/0HNA 0HL(N^NuNVeH3..,. Sp(lJk Axop`^ rNAD px*H0-rAgrAgrAg rAgp`* m .".4(HvpăԮԁԀ1BpL N^NueH./,/Sp(lJk Axop`0 rNAD px*H0-rAg rAgp` m "P L NueH./,/Sp(lJk Axop`* rNAD px*Hpmgp` p0- rL NuNVeH'..*n,. Sp(l"Jk*ARXA.0XAXop`po rNAD pX"Hi A 0XrNAD pXHx/HaXO&@p o01@1@Jgp`p1@1|(Bh !K 0,H". N1@0,H".N1@/ N./@(NXO"/$o / NXO` /.NXO/./@(NXO"/$o2/ N./@(NXO"/$o / NXO`/.NXO` /.NXO.2,H$T/@$ N o1@1l /$gR/a&./NPO'n'n7| 7|7|7|BkJkpo| D7@/ N./@NXO"/o / NXO` /.NXOR7@/.NR7@A.XBAD/0XNA 0XL(N^NuNV̿eH?..Smmp` AD pHnHnHnHn//@8/H4N0.H2.H4.H6.HHlHl////a`0,HJjR2,HJjR4.H6.H8.H/Dd8.H.//d//x////BNOL0,HJjR2,HJjR4.H6.H8.H/D88.H///$N" _gemdos__CXM22_gl_wchar NЃ__CXM33 ^\<TT4P<`Lچ_gl_hchar j_strlenF:.N_objc_add pڃ_strcpy_form_center_mem_mfdb 4_scr_mfdb 0_wwork D _hwork R _form_dial V_objc_draw _graf_mouse  _form_do _handle J _vs_clip _vro_cpyfm byvep//NBHxNNBHxNONuNVe0. J@gS@g`0,8H/N.HxINPONN^NuNVe/NRfp`HxNXOJf/, #include #include void _assert(const char *exp,const char *file,int line) { fprintf(stderr,"Assertion (%s) failed in file %s at line %d\n",exp,file,line); abort(); } ** ** c.s - Lattice C 5 startup routine ** ** Started 19/8/89 Alex G. Kiernan ** ** Copyright (c) 1990 HiSoft ** ** ** Flags Use ** = === ** AUTO Auto-detect program type ** DA Desk Accessory ** GST GST Format mods ** NOALVS Use no external PC-relative code ** NOBASER Use no base-relative code ** REGARGS Use register calling conventions ** RESIDENT Allow program to be resident ** SHORTINT Use default short integers ** include basepage.i include gemdos.i include sysvar.i xdef ___start xref __STACK,__STKDELTA,__BLKSIZ xref @_setargv,__MSTEP,__MemHeap xref __VDIinit,__FPCinit,__ENEED,__MNEED xref __DATALEN,__BSSLEN,__DATABAS,__RESBASE xdef __pbase,__tos,__base,__clkstart xdef _errno,__oserr,__OSERR,__country xdef __saveD2A2,__savePC xdef __msiz,__mblk,__maxblk IFD AUTO xdef __XMODE xref __AESpb,__AEScontrol,__AESglobal,__AESintin,__AESintout xref __AESaddrin,__AESaddrout IFD REGARGS xref @appl_exit ELSE xref _appl_exit ENDC ENDC IFND DA xdef _environ,__ENVC,__onbrk IFD REGARGS xref @_main ELSE xref __main ENDC ELSE xref __DAHeap IFD REGARGS xref @main ELSE xref _main ENDC ENDC IFD REGARGS xdef @_XCEXIT ELSE xdef __XCEXIT ENDC CSECT code,0 IFD GST xdef __LinkerDB ELSE xref __LinkerDB ENDC ___start IFD AUTO moveq #2,d4 move.l a0,a2 move.l a0,d0 bne.s isada ENDC IFD DA move.l #stack,a7 move.l a0,a2 ELSE move.l 4(a7),a2 get program base page ENDC IFD RESIDENT we're resident so we've some work to do ; moveq #4,d4 assume we are resident move.l a2,a1 lea $100(a1),a1 lea __DATABAS,a0 lea ___start(pc),a3 cmp.l a3,a1 bne.s gotram ; moveq #0,d4 until we know we're not resident add.l p_tlen(a2),a1 add size of text add.l p_dlen(a2),a1 add size of data gotram move.l a1,a3 move.l #__DATALEN,d0 copy the static data bra.s dfirst dloop move.l (a0)+,(a1)+ dfirst dbf d0,dloop zerbss move.l #__BSSLEN,d0 zero the bss moveq #0,d1 bra.s bfirst bloop move.l d1,(a1)+ bfirst dbf d0,bloop move.l (a0)+,d0 fetch the relocation word bmi.s allind move.l a3,d3 add.l d0,a3 moveq #127,d2 and step through a GEMDOS relocation table add.w d2,d2 addnxt add.l d3,(a3) relocate a longword nextb move.b (a0)+,d1 get relocation offset beq.s allind cmp.b #1,d1 check for jumps bne.s isnorm add.w d2,a3 bra.s nextb isnorm add.w d1,a3 bra.s addnxt allind move.l d3,a4 add.l #__RESBASE,a4 move.l a1,a3 ELSE lea __LinkerDB,a4 IFD AUTO moveq #0,d4 bra.s notada isada lea __LinkerDB,a4 move.l #isada2,a7 IFD NOBASER move.l #___start,__base ELSE move.l #___start,__base(a4) ENDC notada ENDC IFD DA IFD NOBASER move.l #base,__base ELSE move.l #base,__base(a4) ENDC ENDC ENDC IFD NOBASER move.l a2,__pbase put it somewhere so user can get to it ELSE move.l a2,__pbase(a4) ENDC clr.l -(a7) move.w #$20,-(a7) trap #1 IFD NOBASER move.l (_hz_200).w,__clkstart start time for clock() ELSE move.l (_hz_200).w,__clkstart(a4) ENDC move.l (_sysbase).w,a0 get _sysbase move.l 8(a0),a0 get os_beg IFD NOBASER move.w 2(a0),__tos fetch TOS version number ELSE move.w 2(a0),__tos(a4) fetch TOS version number ENDC move.w $1c(a0),d1 lsr.w #1,d1 IFD NOBASER IFD SHORTINT move.w d1,__country ELSE move.w d1,__country+2 ENDC ELSE IFD SHORTINT move.w d1,__country(a4) ELSE move.w d1,__country+2(a4) ENDC ENDC IFND DA clr.l ($380).w so we can spot exceptions ENDC move.l d0,2(a7) move.w #$20,(a7) trap #1 IFND DA IFD AUTO cmp.b #2,d4 beq isada2 ENDC IFND RESIDENT move.l p_bbase(a2),a1 fetch bss base add.l p_blen(a2),a1 add size of bss ELSE move.l a3,a1 ENDC IFD NOBASER move.l a1,_environ give user environ variable ELSE move.l a1,_environ(a4) ENDC lea.l p_cmdlin(a2),a0 cmp.b #$7f,(a0) Atari extended command line flag seq d7 move.l p_env(a2),a5 tst.b (a5) ; bne.s chk_env ; tst.b 1(a5) beq envread addq.w #1,a5 chk_env tst.b (a5) beq envread move.l a5,(a1)+ IFD SHORTINT IFD NOBASER addq.w #1,__ENVC ELSE addq.w #1,__ENVC(a4) ENDC ELSE IFD NOBASER addq.l #1,__ENVC ELSE addq.l #1,__ENVC(a4) ENDC ENDC ; tst.b d7 ; beq nt_argv cmp.b #'A',(a5) try for a match with ARGV= bne.s nt_argv move.l a5,a3 addq.w #1,a5 cmp.b #'R',(a5)+ bne nt_pbp cmp.b #'G',(a5)+ bne nt_pbp cmp.b #'V',(a5)+ bne nt_pbp cmp.b #'=',(a5)+ bne nt_pbp moveq #0,d0 move.b d0,(a3) tie off old argv move.l d0,-4(a1) tst.b d7 beq envread jsr fixenv(pc) move.l a1,a3 lea 1(a0),a6 bsr chkstk skp_arg tst.b (a5)+ bne.s skp_arg move.l a5,(a1)+ tst.b (a5) bne.s skp_arg clr.l -4(a1) NULL terminate argv[] like UN*X bra go_main nt_argv cmp.b #'_',(a5)+ try for a match with _PBP= bne.s nt_pbp This isn't Atari supported either  cmp.b #'P',(a5)+ but is used by Craft bne.s nt_pbp cmp.b #'B',(a5)+ bne.s nt_pbp cmp.b #'P',(a5)+ bne.s nt_pbp cmp.b #'=',(a5)+ bne.s nt_pbp subq.w #4,a1 tst.b d7 bne.s nt_pbp moveq.l #0,d1 _PBP found now check it moveq.l #0,d0 get_pbp move.b (a5)+,d0 beq.s got_pbp lsl.l #4,d1 cmp.b #'0',d0 bcs.s nt_pbp cmp.b #'9',d0 bcc.s try_af and.b #$f,d0 add.l d0,d1 bra.s get_pbp try_af cmp.b #'A',d0 bcs.s nt_pbp cmp.b #'z',d0 bcc.s nt_pbp cmp.b #'F',d0 bls.s is_af cmp.b #'a',d0 bcs.s nt_pbp is_af and.b #$f,d0 add.b #9,d0 add.l d0,d1 bra.s get_pbp got_pbp cmp.l p_parent(a2),d1 seq d7 bra chk_env nt_pbp tst.b (a5)+ bne.s nt_pbp beq chk_env envread clr.l (a1)+ jsr fixenv(pc) move.l a1,a3 no ARGV= found so do it the old way ; lea.l p_cmdlin(a2),a0 moveq #0,d0 move.b (a0)+,d0 cmp.b #125,d0 Pexec always copies 125 chars bhi.s no_null clr.b 0(a0,d0.w) if < 125 we must null term no_null move.l a0,a6 bsr chkstk IFD NOALVS jsr @_setargv ELSE jsr @_setargv(pc) ENDC move.l d0,a1 go_main move.l a1,d2 save a1 for argc calculation moveq #16,d0 IFD NOBASER cmp.w #$104,__tos tos 1.4 or greater ? ELSE cmp.w #$104,__tos(a4) tos 1.4 or greater ? ENDC bcs.s ot2 moveq #64,d0 ot2 IFD NOBASER IFD SHORTINT move.w d0,__maxblk ELSE move.l d0,__maxblk ENDC ELSE IFD SHORTINT move.w d0,__maxblk(a4) ELSE move.l d0,__maxblk(a4) ENDC ENDC IFD NOBASER move.l a1,__mblk ELSE move.l a1,__mblk(a4) ENDC move.l d0,d1 bra.s fst cmb clr.l (a1)+ fst dbf d1,cmb IFD NOBASER move.l a1,__msiz ELSE move.l a1,__msiz(a4) ENDC bra.s fmst cms clr.l (a1)+ fmst dbf d0,cms IFD NOBASER move.l __MNEED,d0 find initial heap size ELSE move.l __MNEED(a4),d0 find initial heap size ENDC cmp.l #512,d0 minimum size ble.s nomneed addq.l #3,d0 and.w #~3,d0 cmp.l #$1fffc,d0 bge.s nomneed IFD NOBASER move.l a1,__MemHeap setup heap pointer ELSE move.l a1,__MemHeap(a4) setup heap pointer ENDC clr.l (a1)+ no next block move.l d0,(a1)+ length available subq.l #4,d0 move.l d0,(a1)+ length free addq.w #4,a1 move.l a1,-4(a1) rover move.w #$8000,(a1)+ clr.l (a1)+ move.l d0,d1 lsr.l #2,d0 bset #15,d0 move.w d0,(a1) add.l d1,a1 nomneed IFD NOBASER add.l __STKDELTA,a1 add on chicken factor ELSE add.l __STKDELTA(a4),a1 add on chicken factor ENDC IFD NOBASER move.l a1,__base set up stack base ELSE move.l a1,__base(a4) set up stack base ENDC IFD NOBASER add.l __STACK,a1 ELSE add.l __STACK(a4),a1 ENDC move.l a1,d1 longword align stack for performance on TT addq.l #4,d1 and.w #~3,d1 move.l d1,a1 IFD NOBASER tst.l __MSTEP automatic _mstep sizing ? ELSE tst.l __MSTEP(a4) ENDC bne.s no_amst move.l a7,d1 work out how much we are returning sub.l a1,d1 lsr.l #4,d1 set to 1/16 of returned size IFD NOBASER cmp.w #$104,__tos tos 1.4 or greater ? ELSE cmp.w #$104,__tos(a4) tos 1.4 or greater ? ENDC bcs.s old_tos lsr.l #2,d1 use 1/64 for new tos, be less greedy old_tos addq.l #2,d1 round up (not allowing a zero value) bclr #0,d1 and word align IFD NOBASER move.l d1,__MSTEP ELSE move.l d1,__MSTEP(a4) ENDC IFD NOBASER move.l __BLKSIZ,d0 Resize __BLKSIZ for minimal pool spillage ELSE move.l __BLKSIZ(a4),d0 ENDC divu d0,d1 move.w d1,d0 clr.w d1 swap d1 addq.w #1,d0 IFD NOBASER move.l __BLKSIZ,d3 ELSE move.l __BLKSIZ(a4),d3 ENDC sub.l d1,d3 divu d0,d3 swap d3 clr.w d3 swap d3 not.l d3 sub.l #27,d3 and.w #$fffc,d3 IFD NOBASER add.l d3,__BLKSIZ ELSE add.l d3,__BLKSIZ(a4) ENDC no_amst move.l a1,a7 sub.l a3,d2 move.l a3,-(a7) char *argv[] IFD SHORTINT lsr.w #2,d2 divide by pointer size subq.w #1,d2 subtract one to correct for NULL we added move.w d2,-(a7) int argc ELSE lsr.l #2,d2 divide by pointer size subq.l #1,d2 subtract one to correct for NULL we added move.l d2,-(a7) int argc ENDC sub.l a2,a1 calculate length we need add.l #$100,a1 add in base page move.l a1,-(a7) move.l a2,-(a7) move.w #0,-(a7) move.w #m_shrink,-(a7) release memory back to GEM trap #1 lea 12(a7),a7 ENDC IFD AUTO or.w #3,d4 assume auto-folder TOS prog lea __AEScontrol(A4),A0 lea __AESpb(a4),a1 move.l A0,(a1)+ lea __AESglobal(A4),A0 move.l A0,(a1)+ lea __AESintin(A4),A0 move.l A0,(a1)+ lea __AESintout(A4),A0 move.l A0,(a1)+ lea __AESaddrin(A4),A0 move.l A0,(a1)+ lea __AESaddrout(A4),A0 move.l A0,(a1)+ moveq #00,D0 IFD NOBASER lea __AESpb,a0 ELSE lea __AESpb(a4),a0 ENDC move.l (a0),a1 move.l #$0a000100,d0 movep.l d0,1(a1) move.l a0,d1 move.w #200,d0 trap #2 cmp.w #200,d0 beq.s isada2 IFD NOBASER lea __AESintout,a0 ELSE lea __AESintout(a4),a0 ENDC move.w (a0),d0 bmi.s aeserr IFD REGARGS IFD NOALVS jsr @appl_exit ELSE jsr @appl_exit(pc) ENDC ELSE IFD NOALVS jsr _appl_exit ELSE jsr _appl_exit(pc) ENDC ENDC aeserr bclr #1,d4 mark as a regular prog dc.w $a000 tst.w -598(a0) bne.s isada2 bclr #0,d4 mark as a TOS prog isada2 IFD SHORTINT IFD NOBASER move.w d4,__XMODE ELSE move.w d4,__XMODE(a4) ENDC ELSE IFD NOBASER move.l d4,__XMODE ELSE move.l d4,__XMODE(a4) ENDC ENDC ENDC IFD NOALVS jsr __VDIinit wake up VDI if it's required jsr __FPCinit wake up FPC if it's required IFD DA IFD REGARGS jsr @main ELSE jsr _main ENDC ELSE IFD REGARGS IFD SHORTINT move.w (a7)+,d0 ELSE move.l (a7)+,d0 ENDC move.l (a7)+,a0 jsr @_main off to main program ELSE jsr __main off to main program ENDC ENDC ELSE jsr __VDIinit(pc) wake up VDI if it's required jsr __FPCinit(pc) wake up FPC if it's required IFD DA IFD REGARGS jsr @main(pc) ELSE jsr _main(pc) ENDC ELSE IFD REGARGS IFD SHORTINT move.w (a7)+,d0 ELSE move.l (a7)+,d0 ENDC move.l (a7)+,a0 jsr @_main(pc) ELSE jsr __main(pc) ENDC ENDC ENDC IFD DA IFD REGARGS @exit @_exit @_XCEXIT ELSE _exit __exit __XCEXIT ENDC illegal ELSE move.w d0,(a7) bra.s term IFD REGARGS @_XCEXIT move.w d0,(a7) ELSE __XCEXIT IFD SHORTINT addq.w #4,a7 move return code to top of stack ELSE addq.w #6,a7 ENDC ENDC term IFD NOBASER move.l __onbrk,d0 ELSE move.l __onbrk(a4),d0 ENDC beq.s done move.l d0,-(a7) move.w #$102,-(a7) move.w #5,-(a7) trap #13 addq.w #8,a7 done move.w #p_term,-(a7) trap #1 illegal chkstk cmp.b #'=',(a6) stack size specification ? bne.s skp_stk addq.w #1,a6 moveq #0,d1 digit moveq #0,d2 move.b (a6)+,d2 sub.w #$30,d2 blt.s donestk cmp.w #9,d2 bgt.s donestk add.l d1,d1 move.l d1,d3 add.l d1,d1 add.l d1,d1 add.l d3,d1 add.l d2,d1 bra.s digit donestk move.b -1(a6),d2 beq.s got_stk sub.b #32,d2 bne.s skp_stk got_stk tst.l d1 beq.s skp_stk IFD NOBASER /* * _setargv.c - argument set up for Lattice C 5 programs run from desktop * * _setargv is called by the initial startup routine, when an ARGV * environment variable could not be located. It is up to this routine * to parse the command line, building the argv[] vector, and doing any * other environmental setup the user requires when a shell is not present. * * This module must be compiled without stack checking, this is because * _setargv is called prior to the stack base variable being * initialised, or memory being sized. Similarly it may not call any * subroutines which contravene these limitations. The subroutine itself * must use registerised parameter passing, otherwise the startup stub will * break. * * Started 20/8/89 Alex G. Kiernan * * 22/8/89 - Changed to register convention, fixed up exact types of parms * 28/8/89 - Added stderr, stdaux and stdprt support * * Copyright (c) 1989 HiSoft */ #include #include __regargs __redirect(const char *infile,const char *outfile,short *old) { /* perform input redirection */ if (infile) { long fh; if ((fh=Fopen(infile,0))>=0) { if (old) old[0]=Fdup(0); Fforce(0,fh); } } /* perform output redirection */ if (outfile) { long fh; int append; if (*outfile=='>') { append=1; if (outfile[1]=='&') /* redirect stderr as well */ { fh=Fopen(outfile+2,2); outfile=NULL; /* flag to do stderr as well */ } else fh=Fopen(outfile+1,1); } else { append=0; if (*outfile=='&') /* redirect stderr as well */ { fh=Fcreate(outfile+1,0); outfile=NULL; /* flag to do stderr as well */ } else fh=Fcreate(outfile,0); } if (fh>=0) { if (append) Fseek(0,fh,2); if (old) old[1]=Fdup(1); Fforce(1,fh); if (!outfile) /* redirect stderr as well */ { if (old) old[2]=Fdup(2); Fforce(2,fh); } } } } __regargs char **_setargv(char *l 6ine, char **argv) { char *infile=NULL, *outfile=NULL; *argv++=""; /* ANSI requirement when program name unavailable */ for (;;) { register char c; while (*line==' '||*line=='\t') line++; if (!*line) break; switch(c=*line) { case '<': infile=++line; c='\0'; break;  case '>': outfile=++line; c='\0'; break; case '\'': case '"': *argv++=++line; break; default: *argv++=line; c='\0'; break; } while (*line && (c?*line!=c:(*line!=' '&&*line!='\t'))) line++; if (!*line) break; *line++='\0'; } if (_disatty(2)) Fforce(2,-1); /* point stderr to console */ __redirect(infile,outfile,NULL); *argv++=NULL; /* UNIX requirement */ return argv; /* return first free byte after argv[] */ } /* * _main.c - start program running under Lattice C 5 ST * * Started 28/8/89 Alex G. Kiernan, based on Lattice source * * Unlike 3.04 this module no longer performs command line parsing and * I/O redirection, which is done by _setargv. This is to allow support * for the extended command line. The TINY macro has also disappeared, * to create a similar effect, declare your main as _main. * * Copyright (c) 1989 HiSoft and Lattice, Inc. */ #include #include #include #include #include #include #define prn 3 #define aux 4 extern char **environ; /* introduce prototype here to force regargs */ int main(int, char *[],char **); int _main(int argc, char *argv[]) { int i; _ufbs[0].ufbfh = 0; _ufbs[0].ufbflg = UFB_RA; stdin->_file = 0; stdin->_flag = _IOREAD; if (_disatty(0)) stdin->_flag |= _IOLBF; _ufbs[1].ufbfh = 1; _ufbs[1].ufbflg = UFB_WA; stdout->_file = 1; stdout->_flag = _IOWRT; stdout->_flag |= _IONBF; stderr->_file = 2; _ufbs[2].ufbfh = 2; if (_disatty(2)) { stderr->_flag |= _IORW | _IONBF; _ufbs[2].ufbflg = UFB_RA | UFB_WA; } else { stderr->_flag = _IOWRT | _IOLBF; _ufbs[2].ufbflg = UFB_WA; } for (i=0;i<=2;i++) if (!_disatty(i)) _ufbs[i].ufbfh |= UFB_FH; Fforce(aux,-2); /* create an aux: */ _ufbs[3].ufbfh = aux; _ufbs[3].ufbflg = UFB_RA | UFB_WA; _ufbs[4].ufbfh = prn; _ufbs[4].ufbflg = UFB_WA; stdaux->_file = 3; stdaux->_flag = _IORW | _IOLBF; stdprt->_file = 4; stdprt->_flag = _IOWRT | _IOLBF; if(_fmode) { _ufbs[0].ufbflg |= O_RAW; _ufbs[1].ufbflg |= O_RAW; _ufbs[2].ufbflg |= O_RAW; _ufbs[3].ufbflg |= O_RAW; _ufbs[4].ufbflg |= O_RAW; } exit(main(argc,argv,environ)); return 0; } /* * _stub.c - routine called for undefined functions * * Started 20/9/89 Alex G. Kiernan * * Copyright (c) 1989 HiSoft */ #include #include __stdargs void _stub(void) { char *s="Call to undefined function\r\nProgram aborted\r\n"; for (; *s; ) Bconout(2,*s++); _XCEXIT(EXIT_FAILURE); } /* * _xcovf.c - routine called when stack overflow occurs * * Started 20/9/89 Alex G. Kiernan * * Copyright (c) 1989 HiSoft */ #include #include __stdargs void _xcovf(void) { char *s="Stack space exhausted\r\nProgram aborted\r\n"; for (; *s; ) Bconout(2,*s++); _XCEXIT(EXIT_FAILURE); } d** ** basepage.i - Format of GEMDOS basepage ** ** 8/21/89 - Changed from GenST2 to ASM format ** ** Copyright (c) 1989 HiSoft ** offset 0 p_lowtpa ds.l 1 p_hitpa ds.l 1 p_tbase ds.l 1 p_tlen ds.l 1 p_dbase ds.l 1 p_dlen ds.l 1 p_bbase ds.l 1 p_blen ds.l 1 p_dta ds.l 1 p_parent ds.l 1 ds.l 1 p_env ds.l 1 ds.l 20 p_cmdlin ds.b 128 ** ** gemdos.i - GEMDOS magic numbers ** ** Copyright (c) 1989 HiSoft ** p_term0 equ $00 c_conin equ $01 c_conout equ $02 c_auxin equ $03 c_auxout equ $04 c_prnout equ $05 c_rawio equ $06 c_rawcin equ $07 c_necin equ $08 c_conws equ $09 c_conrs equ $0a c_conis equ $0b d_setdrv equ $0e c_conos equ $10 c_prnos equ $11 c_auxis equ $12 c_auxos equ $13 d_getdrv equ $19 f_setdta equ $1a super equ $20 t_getdate equ $2a t_setdate equ $2b t_gettime equ $2c t_settime equ $2d f_getdta equ $2f s_version equ $30 p_termres equ $31 d_free equ $36 d_create equ $39 d_delete equ $3a d_setpath equ $3b f_create equ $3c f_open equ $3d f_close equ $3e f_read equ $3f f_write equ $40 f_delete equ $41 f_seek equ $42 f_attrib equ $43 f_dup equ $45 f_force equ $46 d_getpath equ $47 m_alloc equ $48 m_free equ $49 m_shrink equ $4a p_exec equ $4b p_term equ $4c f_sfirst equ $4e f_snext equ $4f f_rename equ $56 f_datime equ $57 EINVFN equ -32 EFILNF equ -33 EPTHNF equ -34 ENHNDL equ -35 EACCDN equ -36 EIHNDL equ -37 ENSMEM equ -39 EIMBA equ -40 EDRIVE equ -46 ENSNAME equ -48 ENMFIL equ -49 ERANGE equ -64 EINTRN equ -65 EPLFMT equ -66 EGSBF equ -67 ** ** sysvar.i - Atari ST system variables ** ** Copyright (c) 1989 HiSoft ** offset $400 etv_timer ds.l 1 etv_critic ds.l 1 etv_term ds.l 1 etv_xtra ds.l 5 memvalid ds.l 1 memcntlr ds.b 1 ds.b 1 resvalid ds.l 1 resvector ds.l 1 phystop ds.l 1 _membot ds.l 1 _memtop ds.l 1 memval2 ds.l 1 flock ds.w 1 seekrate ds.w 1 _timr_ms ds.w 1 _fverify ds.w 1 _bootdev ds.w 1 palmode ds.w 1 defshiftmd ds.b 1 ds.b 1 sshiftmd ds.w 1 _v_bas_ad ds.l 1 vblsem ds.w 1 nvbls ds.w 1 _vblqueue ds.l 1 colorptr ds.l 1 screenpt ds.l 1 _vbclock ds.l 1 _frclock ds.l 1 hdv_init ds.l 1 swv_vec ds.l 1 hdv_bpb ds.l 1 hdv_rw ds.l 1 hdv_boot ds.l 1 hdv_mediach ds.l 1 _cmdload ds.w 1 conterm ds.b 1 ds.b 1 trp14ret ds.l 1 criticret ds.l 1 themd ds.l 4 _md ds.l 1 savptr ds.l 1 _nflops ds.w 1 con_state ds.l 1 save_row ds.w 1 sav_context ds.l 1 _bufl ds.l 2 _hz_200 ds.l 1 the_env ds.b 4 _drvbits ds.l 1 _dskbufp ds.l 1 _autopath ds.l 1 _vbl_list ds.l 8 _prt_cn >t ds.w 1 _prtabt ds.w 1 _sysbase ds.l 1 _shell_p ds.l 1 end_os ds.l 1 exec_os ds.l 1 scr_dump ds.l 1 prv_lsto ds.l 1 prv_lst ds.l 1 prv_auxo ds.l 1 prv_aux ds.l 1 K/*** * * Copyright 1989 Lattice, Inc. * * name _CXFERR -- low-level floating point error trap * * synopsis _CXFERR(code); * int code; error code (see math.h) * * description This function is called when an error is detected by * one of the low-level floating point routines, such as * the arithmetic operations. Higher-level routines such * as the transcendental functions, use the more sophisti- * cated "matherr" trap. * ***/ #include void __stdargs _CXFERR(int); extern int _FPERR; void __stdargs _CXFERR(code) int code; { _FPERR = code; raise(SIGFPE); } /*** * * Copyright 1989 Lattice, Inc. * * name _CXFPE -- low-level floating point error handler * * synopsis _CXFPE(sig); * int sig; signal number * * description This function is the default function to be called * when the SIGFPE signal has been raised. It sets * errno appropriately. * ***/ #include #include #include extern void _CXFPE(int); extern int _FPERR; void _CXFPE(sig) int sig; { switch(_FPERR) { case FPEUND: case FPEOVF: case FPEZDV: errno = ERANGE; break; case FPENAN: case FPECOM: errno = EDOM; break; } return; } /* Copyright Lattice, INC. 1989, ALL RIGHTS RESERVED */ #include "error.h" #include "math.h" extern int errno; /** * * name matherr -- math error handler * * synopsis action = matherr(x); * int action; non-zero if new value supplied * struct exception *x; * * description This function is called by functions in the math library * when an error occurs. The exception vector contains * information about the function that encountered the * error, including the error type, function name, first * two arguments, and proposed default value. * * Normally, matherr translates the error type into a code * that is placed into "errno". Then, matherr signals * the caller to simply use the proposed default. Other * actions are possible if the user replaces or enhances * this function with application-specific code. **/ matherr(x) struct exception *x; { switch(x->type) { case DOMAIN: case SING: errno = EDOM; break; default: errno = ERANGE; } return(0); } # 8/** * * Copyright 1988 by Lattice, Inc. * * This module defines the error messages corresponding to the codes that * can appear in _OSERR. * */ int os_nerr = 67; /* Highest valid error number */ char *os_errlist[] = { "Unknown error code", /* 01 */ "General failure", /* 02 */ "Drive not ready", /* 03 */ "Unknown command", /* 04 */ "Data error", /* 05 */ "Bad request structure length", /* 06 */ "Seek error", /* 07 */ "Unknown media type", /* 08 */ "Sector not found", /* 09 */ "Printer paper alarm", /* 10 */ "Write fault", /* 11 */ "Read fault", /* 12 */ "Error 12", /* 13 */ "Can't write on protected device", /* 14 */ "Invalid disk change", /* 15 */ "Unknown unit", /* 16 */ "Bad sectors on format", /* 17 */ "Insert other disk", /* 18 */ "Error 18", /* 19 */ "Error 19", /* 20 */ "Error 20", /* 21 */ "Error 21", /* 22 */ "Error 22", /* 23 */ "Error 23", /* 24 */ "Error 24", /* 25 */ "Error 25", /* 26 */ "Error 26", /* 27 */ "Error 27", /* 28 */ "Error 28", /* 29 */ "Error 29", /* 30 */ "Error 30", /* 31 */ "Error 31", /* 32 */ "Invalid function number", /* 33 */ "File not found", /* 34 */ "Path not found", /* 35 */ "Too many files opened", /* 36 */ "Access denied", /* 37 */ "Invalid handle", /* 38 */ "Error 38", /* 39 */ "Insufficient memory", /* 40 */ "Invalid memory block address", /* 41 */ "Error 41", /* 42 */ "Error 42", /* 43 */ "Error 43", /* 44 */ "Error 44", /* 45 */ "Error 45", /* 46 */ "Invalid drive code", /* 47 */ "Error 47", /* 48 */ "Not same device", /* 49 */ "No more files", /* 50 */ "Error 50", /* 51 */ "Error 51", /* 52 */ "Error 52", /* 53 */ "Error 53", /* 54 */ "Error 54", /* 55 */ "Error 55", /* 56 */ "Error 56", /* 57 */ "Error 57", /* 58 */ "Error 58", /* 59 */ "Error 59", /* 60 */ "Error 60", /* 61 */ "Error 61", /* 62 */ "Error 62", /* 63 */ "Error 63", /* 64 */ "Range error", /* 65 */ "GEMDOS internal error", /* 66 */ "Invalid program load format", /* 67 */ "Memory growth failure", }; /* * * Copyright 1988 by Lattice, Inc. * * This module defines the error messages corresponding to the codes that * can appear in errno. * */ #include int sys_nerr = 34; /* Highest valid error number */ char *sys_errlist[] = { "Unknown error code", /* EPERM 1 */ "User is not owner", /* ENOENT 2 */ "No such file or directory", /* ESRCH 3 */ "No such process", /* EINTR 4 */ "Interrupted system call", /* EIO 5 */ "I/O error", /* ENXIO 6 */ "No such device or address", /* E2BIG 7 */ "Arg list is too long", /* ENOEXEC 8 */ "Exec format error", /* EBADF 9 */ "Bad file number", /* ECHILD 10 */ "No child process", /* EAGAIN 11 */ "No more processes allowed", /* ENOMEM 12 */ "No memory available", /* EACCES 13 */ "Access denied", /* EFAULT 14 */ "Bad address", /* ENOTBLK 15 */ "Bulk device required", /* EBUSY 16 */ "Resource is busy", /* EEXIST 17 */ "File already exists", /* EXDEV 18 */ "Cross-device link", /* ENODEV 19 */ "No such device", /* ENOTDIR 20 */ "Not a directory", /* EISDIR 21 */ "Is a directory", /* EINVAL 22 */ "Invalid argument", /* ENFILE 23 */ "No more files (units) allowed", /* EMFILE 24 */ "No more files (units) allowed for this process", /* ENOTTY 25 */ "Not a terminal", /* ETXTBSY 26 */ "Text file is busy", /* EFBIG 27 */ "File is too large", /* ENOSPC 28 */ "No space left", /* ESPIPE 29 */ "Seek issued to pipe", /* EROFS 30 */ "Read-only file system", /* EMLINK 31 */ "Too many links", /* EPIPE 32 */ "Broken pipe", /* EDOM 33 */ "Math function argument error", /* ERANGE 34 */ "Math function result is out of range" }; X`H ,NE&NVpN?2Hy /</<AT//<?<Hy /<+/<,N1 @f N`#H#H`*yH@rAf"(yH@;@,@;@`*yHBm(yH@;@*yHA//</<(yHHl/</<N4`HnN#H#HN^ _XNGHN(?</<N,7@$Hy /</<N?<Hy /<U/<VN1 @fNHkh/<JJfR+"`"OPHk2+&SAAHABAHA /N7/+0+&S@@?NLNHkh/<*yHAyHRyHQyKyHP#HN^ _XNR.NV/ GOP/./. /.<N&HnNhHn?<N|&_N^ _ NNV/ GOPB./.".\$.0?N n\//</<NnHn?<N&_N^ _XNRnNV/ GOP+Jg|HnNN&_N^Nu*yHRm*yHRmRnRnRnRnRnRnRnS+GOP |C~ "QNu"WERCS.LNGLANGUAGE ENDINITTREEOBJECTEXITSOURCE. expected afer SOURCE directiveINITIALFOLLOWSIGNIFICANCECASING Bad directive: Error reading .LNG file - no languageWERCS.INFGRNNu yT0 @RBNuGRNA`/ GRNN&_Nu /NDNu _02// /???<NMO,_&_Nu _2// /??<NMO,_&_Nu _2// /??< NMO,_&_Nu _2// /??<NMO,_&_Nu#RV#RZ?<NMO&yRZ yRVN#RV#RZ?<NMO&yRZ yRVN#RV#RZ?<NMO&yRZ yRVN#RV#RZ?<NMO&yRZ yRVN#RV#RZ?<NMO&yRZ yRVN#RV#RZ?<NMO&yRZ yRVN#RV#RZ?< NMO&yRZ yRVN#RV#RZ?< NMO&yRZ yRVN#RV#RZ?<NNO &yRZ yRVN?<NNTNu?<NNTNu?<NNTNu _$_// / ?<&NNO&_Nu#RV#RZ?<NNO &yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?< NNO&yRZ yRVN#RV#RZ?< NNO&yRZ yRVN#RV#RZ?< NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO&yRZ yRVN#RV#RZ?<NNO &yRZ yRVN#RV#RZ?< NNO&yRZ yRVN#RV#RZ?<!NNO&yRZ yRVN#RV#RZ?<"NNO&yRZ yRVN#RV#RZ?<#NNO&yRZ yRVN#RV#RZ?<$NNO&yRZ yRVN#RV#RZ?<%NNO&yRZ yRVNRn*yHRv*yHRvN?2Rn|Rn|RnzN?2N?2N?2N?2RnN?2N?2N?2NV/ GRb .7@r2. .N@'@ ./v6. "+N@"*'E kHV"n6+H$-kSkJgJkl".k n0r0+@n(D??7@ n4+H" 02S@Q&_N^ _NNV/ GRbJl| .D-@`B./.?./././. /.N.Jg> n4H(*.n* n"."n6H$- n0R@ n0&_N^ _NRRNV/ GRv nf NC=@ ndt?.NJ@f`bNC-@HnzNC |,TC~"Q0.|A@9,ZHnNDH-@?.N-@/.NC&_N^ _TNNV nR@t:Bf(U nN=A0|A?N` ? n :EH E g&/9H n 4BH B s#H*yHJmc-Jg.JgHmr2- / n 4?ND6'@Jl$*yHBm +D7@#H``R +*yH4-H"l&Bm n 2?ND&H'@'|` n 2?ND&H'@` n 2?ND&H'@ n 2AH AHs*yH8PDHDBDHD&/N9#H` n 2?ND&H'@Jl +D7@`Bk&_N^ _\NNV/ GRv?./.?. NJkf + n0` n0&_N^ _ NNV/ GRv?./.?. NlJkf + n0` n0&_N^ _ NN?2N?2N?2NV/ GRv n e" n2 b2. AH A g`\2. AH AHs6.PCHCBCHC$/N7/9H4. BH B s#H*yH:BmBmB-#H&_N^ _XNGRvr-p??7@2+AH A'02R@QNu@:*.*RkRkRkRkRkRkRkNV/ GS=|MBn=|BnBn//<@tBgRr2.$&. b0. nv6.$>2.3>@t\Bf 0.R@=@Rn`Bnr2.$&. bD nRnRm`N^ _ N/9HNV#H |0C~"QNCR@=@?.Hk>NDf=|>2.3>@tBf=n02S@Q n7c=|7=n=|Hy1/</<N=n2.SA3>@t\Bg0.\>RnHy1/</<N0.B3>0.|AS@@>N^#HNuGSNNu[ ][]Prompt box too big for screen OOPS%AcceptCancel:*.RSCNVpN?2/ GTT=|4=|=|=|Bn=n-n/".0+@e&??7@ nt4+" 02R@Q".RA7A0+$.2Ab nt4+"B0+`&_N^ _NNVpN?2/ GTZ n//./././. /.<N7@&_N^ _NN?2NV/ GTZ n//./. N67@0. 24+Be`0. n24+Bc0+n =@2+n0. @e:??7@ n4+nHBBBHB""nz:+(02R@Q0+n7@0+$.2Ab nt4+"B&_N^ _NN?2N?2N?2NVpN?2pN?2/ GTZ n//./. N:7@0.24+Be 0+S@=@ n//./.N 7@0.kR@7@Bk0+$.2Ab" n|<+*Cp@f 0+`b nv6+$@ n2+kHABAHA,Dg`Rk`Jkf` Sk`r".0R@`&_N^ _NN?2N?2\:/NV/<NDn-@-n ."$.dp`09Hz249HxBd"29HxyHzHABAHA .N@-@ ."$+c-k ."$.d-nRyHz/.NDn-@/9H n#H*yH*H|#H|+n+|+| #Hp`N^ _XNNV . Ю`N^ _PNNV/ GTb .^//p02@0Nu0/lD@?@ _TN _0@NS@gVf JAgmJ`JNuNu _ am znNH@B@H@Nu>p02@0NuNFQN(NQNNQNNFQN @g,NVf _.IN! R _.IFfSNNfRN Am~>G@l7xARA'drNr _gRNДA _N RAQN Am$~>懾@l??0<`7x02Nup _HyHNgRACSNuACSNu @lpNu"_.HN PN Am~>懾@l??0<`F7x02Nug @0(` @ ("P$_gR (OgS!Q NO HgNz @oJ$//?< NAOHyH?< NAO N:HyH?< NAO2<0<QQ2 _?<LNA _p HyHN/H@N NNu?@N 0NNuN NNu l0NW??<NAONu /lD/@ _XN//Nf"N "ANu//Nz"N*"ANu.HA/HGBGЇ.HGHAHGBGЇNu.HA/HGBGЇ.HGHAHGBGЇNu lD lD`NDNu lD`HA AfHA.B@H@H@HG>HG0NuHAe8B?<eRF`ЁeQ`eQ< SNupNu#U"(gT} g" gDopHyH |N "_.@!@/ //?<?<JNAO N"_.@/ Nu o0 @f #HNL @f#HN8 @f !yHN& @f0( WN"yH#H3@ iN _ON _ @NпUn _p HyHN N _> N _> N _ B@H@N _ H@B@H@N nRPn RnGUBkBkNuNV/ GU=|ZBn=|=|Bn-n -n/<HnHnHnHyUHnND nW n0.`&_N^ _NvpNvpNvpNvpNvpNvpNvpNvpN~vpNvvp Nnvp Nfvp NjvpNVvpNZvpNRvpNJvpNBvpN.vpN&vp*Nvp+Nvp,Nvp-Nvp/Nvp0Nvp1Nvp6Nvp9Nvp:Nvp;NvpNv p?Nv p@NvpANvpBNvpCNvpENvpFN~vpGNvvpHNnvpINfv pJN^ _6 "$// ////??<KNAO,_&_NuvpLN.v $?//pNNvpONv pVN vpWN(_?NATN(_?NA@TNA" <NB _ONA"psNB _ONAF(#H <ۄ"<VNAFN"NBN N pNDN0N="N;N,$N NNpAN?pdFORM MENU ALERT FrStringFrImageObject bject 0123456789ABCDEFCONAUXPRN| not enough memory to runOut of rangeSet element out of rangestack overflow near   "$<&  . .*H  "  "        "8  2&& . $ "&&4zZ .*0$6 " xX""lH $42D $ $& $$z   HZ( *D"|>   & 64T X.$  .R& ,F $v,VL8 6HB RZ2 B:  D*2J$ lD.j@ L\:  . 6 2 VL ( 2$".j.H( j> < `HNFHy ./</< N>N>jHy 8/</<N>N>jHy N/<'/<(N>N>jHy x/<&/<'N>N>jN>jHy /</<N>N>jHy /</<N>N>jpANAvNuNVHy /</< n//./. n//./.N2j?N57@*r2+*$&.c nB`\ n4+*RBHBBBHB""n n4+*TBHBBBHB""nR n4+*VBHBBBHB""nT nVBN^ _NNVpNA8 n(//.$/. /././.N3Hy /</< n//./. n//./.N2j?N5=@r2.$&.c8 n//./.Hy /</</././.N1` n4.RBHBBBHB"B n//./. n//. /./././.N1N^ _$NNV/9H n #H/9HA#H*yH-@ @g`(yH` @g`&.Jg*yH` *yHB`x @g`*yH`` @g`*yHB`J @g`*yH`2 @g`*yH` @g`*yH`*yH@rAf$(yH,@;@,@;@`*yHBm(yH,@;@*yHA//</<(yHHl/</<N3HnN|#H#HN^ _\NNV/9H n#H/9HA#H*yH-@ @g`(yH` @g`,*yH-Jg(yH` *yHB` @g`*yH` @g`*yHB`x @g`*yH`` @g`*yH`H @g`*yH`0N>jHy /</<N>#H#H`*yH@rAf"(yH@;@,@;@`*yHBm(yH@;@*yHA//</<(yHHl/</<N3HnN|#H#HN^ _XNNV/./<N>jN^ _XNNV-n -n n"nrpN?nR`N^ _PNGHHy */<:/<;N>N>jHkn/< /<,HkN.Z7|$JkfNp2+SAp@m??7@*2+*A snX//</<Hk/<d/<Hk"N,| k"oDHk?+"?<A`""O O O GHN&_Nu /N)"`HJk"f@2+*A snX//</<N>Hy f/< /< N>N>j2+"SAp@m??7@(2+*A snX//</<8+(H DA//< /<Hk,/<A,//<N>jHk,N02R@Qb02R@Q|NuUsage is: WCONVERT where gives the file(s) to convertDEF, DFN and RSD files may be convertede.g. wconvert mine.dfne.g. wconvert *.rsd.Warning: Unknown type foundDEFRSDHRDDFNSorry, can only convert DEF, RSD and DFN filesWConvert Command Line version 1.3 (c) Copyright HiSoft 1990 not found.Converting: *yHRmR RRR NA8RnRnRnRnRnNA8RnRnRnGObNuInvalid name %1Name %1 already exists - ignoredNA8GPNu o "oB0/g S@ Q _O N o "o0/gS@Q _O NRRnRnRkGQ&HkHkHkHkN(7@ | CNuNA8NA8Rn n,RP n,RPSnRnRnRnNVBkt4+ B(@v CfRk`r2+ Ah.@rAf`4Rk.@r Af`r2+ AnRk`r2+ AB(N^NuNA8RkRkRnNVA//</<N>Hy/</<N>N^NuNV n//. /.Hk/</<N3N^ _ NNVpNA8pNA8p(NA8/ GQ: n(//.$/. Hk/</<N3BkBkN kfjA"|2<pN?nf/././.NF`,A"|2<pN?nf/./. /.NJkcN`Jkf ``N`tN>j&_N^ _$NNVpNA8p NA8/ GQ:/.?< Hn/</<HnNHn/</<?<pn?N4 n //./. n//./. A//</<N~&_N^ _NNA8NV/ GQ: n//./. Hk/< n4H(*.n* n"."n6H$- n0R@ n0&_N^ _NRRNV/ GX0 nf NE|=@ ndt?.NJ@f`bNE-@HnzNE |(C~"Q0.|A@9(HnNFH-@?.N-@/.NE&_N^ _TNNV nR@t:Bf(U nN?A0|A?N` ? n :EH E g&/9H n 4BH B s#H*yHJmc-Jg.JgHmr2- / n 4?NF'@Jl$*yHBm +D7@#H``R +*yH4-H"l&Bm n 2?NEH'@'|` n 2?NEH'@` n 2?NEH'@ n 2AH AHs*yH8PDHDBDHD&/N;#H` n 2?NEH'@Jl +D7@`Bk&_N^ _\NNV/ GX0?./.?. NJkf + n0` n0&_N^ _ NNV/ GX0?./.?. NlJkf + n0` n0&_N^ _ NNA8NA8NA8NV/ GX0 n e" n2 b2. AH A g`\2. AH AHs6.PCHCBCHC$/N9/9H4. BH B s#H*yH:BmBmB-#H&_N^ _XNGX0r-p??7@2+AH A'02R@QNu@:*.*NV/ GY=|MBn=|BnBn/0.24.BfSn/./.?. ND` .t4. "Ё-@/.?.?. /.N/.0.n??. /.N&_N^ _ NNVp NA8/ GY nBPHnNE+/. NF=@Jng`R n2H&(.o`:"n n8H rNB$A"""2 nRPNF=@`&_N^ _NGY |-0CNuNVHn2. ZAH /N9*yH m"m 4H" /9H yH#H/9H m"m 6H$ P#H0+24-Bm(yH| `*yHn 0. *yHn2. SAp@m".0+@e&??7@ nt4+" 02R@Q".RA7A0+$.2Ab nt4+"B0+`&_N^ _NNVpNA8/ GY n//./././. /.<N7@&_N^ _NNA8NV/ GY n//./. N67@0. 24+Be`0. n24+Bc0+n =@2+n0. @e:??7@ n4+nHBBBHB""nz:+(02R@Q0+n7@0+$.2Ab nt4+"B&_N^ _NNVp NA8/ GY0.$.2Ac .=@ n //./.N<7@0.24+Bd Jnf nB`0.n24+Bc0+n=@2.nSA0.@e:??7@ n t4+""n:+nHEBEHE(02R@Q0.$. 2Ab nt4."B&_N^ _NNA8NA8NVpNA8pNA8/ GY n//./. NB7@0.24+Be 0+S@=@ n//./.N7@0.kR@7@Bk0+$.2Ab" n|<+*Cp@f 0+`b nv6+$@ n2+kHABAHA,Dg`Rk`Jkf` Sk`r".0R@`&_N^ _NNVpNA8p(NA8/ GYHy8/</< n(//.$/. $.$2RA?N=@0.$.$2AcBnHy8/</< n(//.$/. $.$2RA?NX=@0.$.$2AcBn0.24.Bc=nHy8/</< n(//.$/. $.$2RA?N=@0.$.$2AcBn0.24.Bc=nJnf, n//./././. /.<Nv=@`X n(//.$/. ?<2.RA?/./. /.Nh n//. /. n//./././. /.NZ&_N^ _$N\:/NV/<NF<-@-n ."$.dp`09Hx249HvBd"29HvyHxHABAHA .NB-@ ."$+c-k ."$.d-nRyHx/.NF<-@/9H n#H*yH*Hz#Hz+n+|+| #Hp`N^ _XNNV . Ю`N^ _PNNV/ GY .^///< /<N>N>jpANAvNuNV/ GY n  f` .^//p02@0Nu0/lD@?@ _TN _0@NS@gVf JAgmJ`JNuNu _ am znNH@B@H@Nu>p02@0NuNFQN(N QNNQNNFQN @g,NVf _.IN! R _.IFfSNNfRN Am~>G@l7xARA'drNr _gRNДA _N RAQN Am$~>懾@l??0<`7x02Nup _HyHNgRACSNuACSNu @lpNu"_.HN PN Am~>懾@l??0<`F7x02Nug @0(` @ ("P$_gR (OgS!Q NO HgNz @oJ$//?< NAOHyH?< NAO N:HyH?< NAO2<0<QQ2 _?<LNA _p HyHN/H@N NNu?@N 0NNuN NNu l0NW??<NAONu /lD/@ _XN//Nf"N "ANu//Nz"N*"ANu.HA/HGBGЇ.HGHAHGBGЇNu.HA/HGBGЇ.HGHAHGBGЇNu lD lD`NDNu lD`HA AfHA.B@H@H@HG>HG0NuHAe8B?<eRF`ЁeQ`eQ< SNupNu#ZV"(gT} g" gDopHyH |N "_.@!@/ //?<?<JNAO N"_.@/ Nu o0 @f #HNL @f#HN8 @f !yHN& @f0( WN"yH#H3@ iN _ON _ @NпZVn _p HyHN N _> N _> N _ B@H@N _ H@B@H@N o "oB0/S@m Q _O N o "o0/S@mQ _O N o "o0/S@m Q _O NvpNvpNvpNvpNvpNvpNvpNvpN~vpNvvp Nnvp Nfvp NjvpNVvpNZvpNRvpNJvpNBvpN.vpN&vp*Nvp+Nvp,Nvp-Nvp/Nvp0Nvp1Nvp6Nvp9Nvp:Nvp;NvpNv p?Nv p@NvpANvpBNvpCNvpENvpFN~vpGNvvpHNnvpINfv pJN^ _6 "$// ////??<KNAO,_&_NuvpLN.v $?//pNNvpONv pVN vpWN(_?NATN(_?NA@TNA" <NB _ONA"psNB _ONAG#H <"<ZxNCLNN N bNN-N?(N=N(fNN N8N HpANAvFORM MENU ALERT FrStringFrImageObject bject 0123456789ABCDEFCONAUXPRN not enough memory to runOut of rangeSet element out of rangestack overflow near  . .*H  ""       :  2&& . $ "&&4 *\6,fx<Z (,$ " B""F $42D $ $$   HZ( *D"|>  & 64T X.$  .R& ,F $v,VL8 6HB R>2 < dz","T<@P4^>$8  L>dV."$ L\:   F\. 6 2 VL ( 2$".j.H(  *LANGUAGE C *SOURCE .H *TREE #define %T %V *OBJECT #define %N %V *INITIAL A-Z,a-z,_ *FOLLOW A-Z,a-z,0-9,_ *SIGNIFICANCE 16 *CASING Upper *LANGUAGE Pascal *SOURCE .INC *INIT CONST *TREE %T=%V; *OBJECT %N=%V; *INITIAL A-Z,a-z *FOLLOW A-Z,a-z,0-9 *SIGNIFICANCE 16 *CASING Lower *LANGUAGE Modula-2 *SOURCE .DEF *INIT DEFINITION MODULE %F; CONST *TREE %T=%V; *OBJECT %N=%V; *EXIT END %F. *INITIAL A-Z,a-z,_,$ *FOLLOW A-Z,a-z,0-9,_,$ *SIGNIFICANCE 16 *CASING None *LANGUAGE Fortran *SOURCE .INC *TREE INTEGER*4 %T PARAMETER (%T=%V) *OBJECT INTEGER*4 %N PARAMETER (%N=%V) *INITIAL A-Z,a-z *FOLLOW A-Z,a-z,0-9,_ *SIGNIFICANCE 16 *CASING Upper *LANGUAGE Assembler *SOURCE .I *TREE %T EQU %V *OBJECT %N EQU %V *INITIAL A-Z,a-z,_ *FOLLOW A-Z,a-z,0-9,_,. *SIGNIFICANCE 16 *CASING None *LANGUAGE BASIC *SOURCE .BH *TREE CONST %T%% = %V *OBJECT CONST %N%% = %V *INITIAL A-Z,a-z *FOLLOW A-Z,a-z,0-9,_ *SIGNIFICANCE 16 *CASING None *END `@exN>NVHkb"/<#@?<N-@*y@-@<A@=@0. n nRB?<Nv-@Aa//<#@*y@: ?<N\-@U nN)A|A*y@A?<Nj2HABAHA*y@+A?<NL*y@;@r6-SCHCBCHC$RBB;B#@?<N-@ n//</<Hka/<*y@"-0?N*y@ d:Bka/9@A`>#@p (y@@)|9|p#@`r*y@ - N-27@ar0+aƒ@e&??=@4.BH BA`HB02R@Q. @rAg2*y@Jc'k*Hk@<"-0?NHk :?+aN#@Hn<N%?</"-0?N|*y@JcHk@<"-0?N^Hk :?+aNR#@Hn<N%?</#@rp??=@6.CH C*y@A "|RrpN)g\6.CH C*y@A :.EH"EC """"0.24.Bg |R6.CH"CC """"Rn02R@Qn#@7naN^NuNV +a4.HBBBHB"Ё-@ n vC2pN+T n N^ _TNG@N |@Ca~"QHka/<".0+@e&??7@ nt4+" 02R@Q".RA7A0+$.2Ab nt4+"B0+`&_N^ _NNVpN+/ G n//./././. /.<N7@&_N^ _NN+N+N+N+N+N+RkSkN+N+\:/NV/ G"=|2=|=|=|Bn=n/Nv p?Nv p@NvpANvpBNvpCNvpENvpFN~vpGNvvpHNnvpINfv pJN^ _6 "$// ////??<KNAO,_&_NuvpLN.v $?//pNNvpONv pVN vpWN(_?NATN(_?NA@TNNV/ Gb nf N=@ ndp?.N.J@f`\N-@HnzNn |)xC~"Q0.|A@9)~HnN@H-@?.N.-@/.N$&_N^ _TNNV nR@t:Bf(U nN)A0|A?N$` ??<HnNz7@Jkm&?+Nv7@.A0?HnNV7@Jkm6 n0Bk n2HABAHA AB( n2HABAHA AB(0+D@`&_N^ _NNV ne n2b2.AH A g/9@4.BH B s#@=nJncx*y@0-24Be@Hmr2 /?.N'@*y@BmJl +D7@#@`z n t*y@4-"BR SnRm`*y@|#@Bkp0.'@`2Bk/. r2. /?.N '@Jl +D7@N^ _PNNV neB n2b82.AH A g"/9@4.BH B s#@=nJnc*y@0-24-BeHmr2 /?.Nf'@*y@BmJl& +D7@r2. A|#@`d +t*y@4"Uz:. ECBm +;@Jmf0.nH@B@H@'@#@`r*y@2- A"n R SnRm`#@Bkp0.'@`Bk n2bjt4. B(JgVr2. AB(r2. A"n ( . R/4.SBHBBBHB"/?.N6'@JmR`/. r2. /?.N '@Jl +D7@r2. A|`JWt4. B@N^ _PNNV/ Gb n 0 @c` n 0 @e n 4 B2b n :EH E g/9@ n 4BH B s#@*y@JmcZ-JgP.JgFHmr2- / n 4?N '@*y@BmJl +D7@#@`^ n 2AH AHs*y@8PDHDBDHD&/N5#@ n 2?NH'@Jl +D7@`Bk&_N^ _\NNV/ Gb?./.?. NJkf + n0` n0&_N^ _ NNV/ Gb?./.?. NJkf + n0` n0&_N^ _ NN+N+N+NV/ Gb?<?. /.N'@r2. AB(Jl +D7@`Bk k@g`?. N-@?<?. /.N'@2<p??=@pt4. B@02R@Q ."$.d^ . b .=@`=|?. Hn?.HnNJkg` .t4."Ё-@`&_N^ _\NNV/ Gb?<?./<N-@?<?./<N'@Jl +D7@p`"`?<?./.N-@ +`&_N^ _TNGbr-p??7@2+AH A'02R@QNu@:*.*HNu>p02@0Nu0/lD@?@ _TN _0@NS@gVf JAgmJ`JNuNu _ am znNH@B@H@Nu>p02@0NuNFQN(NQNNQNNFQN @g,NVf _.IN! R _.IFfSNNfRN Am~>G@l7xARA'drNr _gRNДA _N RAQN Am$~>懾@l??0<`7x02Nup _Hy@FNgRACSNuACSNu @lpNu"_.HN PN Am~>懾@l??0<`F7x02Nug @0(` @ ("P$_gR (OgS!Q NO @gNz @oJ$//?< NAOHy@o?< NAO N:Hy@v?< NAO2<0<QQ2 _?<LNA _p Hy@9N/H@N NNu?@N 0NNuN NNu l0NW??<NAONu /lD/@ _XN//Nf"N "ANu//Nz"N*"ANu.HA/HGBGЇ.HGHAHGBGЇNu.HA/HGBGЇ.HGHAHGBGЇNu lD lD`NDNu lD`HA AfHA.B@H@H@HG>HG0NuHAe8B?<eRF`ЁeQ`eQ< SNupNu#"(gT} g" gDopHy@ |N "_.@!@/ //?<?<JNAO N"_.@/ Nu o0 @f #@NL @f#@N8 @f !y@N& @f0( WN"y@#H3@ iN _ON _ @Nпn _p Hy@_N/< /<N8N7pAN+NuNV/ G n  f` .^//-@-y@~ g6 . n "b&. nX(ք n ,d n-P` f`t n 'P'|'| n $&+c'k 'k k'P` n 'P kX  k  n Ю$&+f" . kX"Ё kX k"k" f n `R n $+ kX&ԃf0 kX  kX$Ђ kX k"k"'k` k  n Ю nP$fN n "nP" +"$+f'k  f n ` k  n &_N^ _PNGA`/ GN&_Nu'H'|Nu Out of memoryNV/ G9@Jg.AN+P`.A0?N &_N^ _TN/ G< N< N&_NuNVBk2+H$&. o`B n6+H$@xDf` n6+H$NJRk`N^ _ NNVpN+/ G/./. /.Nt&_N^ _ NN+Gp@ Nu NVpN+p(N+/ GxBn n,0&.$4Bb8.,. :Eb~ n("n,0H@B@H@@rAgZ n("n,:HEBEHE(Bp;@g4 n("n,4HBBBHB""n|<.*Rn n,RP`dJnfp` n("n,6HCBCHC$@z;Ef n,RP n6.SCHCBCHC$@x\Dg nt4."\`SnBnRn0.$.2AbX n|<.*Cp@g80.". Ad* nt4.""nz:.(RnRn` nt4."Bp`&_N^ _(NNVxpN+/ Gx/. n//./. .NJ@f<".p@e*??=@| nt4.|"6.|002R@Qp` BnxB.~Hy;/</<Hn~/</<N N _> N _> N _ B@H@N _ H@B@H@NA?#@ <-B"<N-N8PN7N)HNpAN+0123456789ABCDEFCONAUXPRNnot enough memory to runOut of rangeSet element out of rangestack overflow near .ZL( T4 F"< Z j,  $4   H$ *.  N0   H"4 *  0*F > 4:: p "@ "2 : "2 F X ": 2  2 B.6 H 8$ & B4T X, ~.,F $L@BHB tļ".j.H( >* ( 2&$h" ">$.<& (zh n(yj;l;l#nHkHn?<N#F-@HkHn?<N#F-@#jHkHyNL n 'PTHyv/<NHyz/<N/9j kT#jrv*yj6-$0H@B@H@'@P#j/+TNp/+,/.NDJg<Na` <N`Hk/.?<N#F-@/9j n#j*yjBmBm#jHkHyNL n 'PXHyv/<N/9j kX#j*yj0-^^^$^ " m:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_XMDrive: _:a0500Disk Size: _K91234Dir Entries: _9LOAD012345678901234567890123456789Save as: _PSAVEClear FilesCopied Files/Directories:EXITHiSoft Reset Proof Ramdisk 1.8LOAD DRIVERLoad info$3BQ`o~#2AP_n}"1@O^m|!0?N]l{ 9(!9  . J f       * F b ~ '  $&$ B'X ]& i+ 1 $! %& ^#j*yj+|BmB-#j/. <N8t.Jg/. /.N&_N^ _ NG| | NNu[1][ Delete Children too ][ Yes | No ]NV/9j n#j*yj:9^+ApN&*yjAy6y5yy4#jN^ _XNNVB...ApNJf.BvCdR.`.`N^ _TNNV/9j n#j*yj-Nb`hJ Hzh?< NA\B?< NA\`B ByF y h.PN z*(#0(3 7H8 9#J"`#F":0(H#3 x.@g8 bf."H@g!U<UfJa2` 86kCe a9Pf x.4(|l:AN?<NATAOHz?<NA\>9SGkl"y?/ KRIb)<:g O:`:p\fRIBW/ a*_JGf?</ ?<NNAPJf(a"_>CQ x.1|B?< NA\BgNA/ ?< NA\Hz?< NA\`~?/ ?<NNAPJm2:@<.g:-߸fA p6QRGg ?<ONAT`Nu Lf*HS$Ig"<\fBH*LaL<\K`B&yJx:<av?/SGk/ &z S@ LIQ$<\fR"LA,+fM/?< NA\Hz1?< NA\Bg/?<=NAP:/9F/??<?NAO ??<>NAX?NBg/?<NAX?NBg/?<=NAP2:?<?Hk?<WNAO ??<>NAXG,Q*(_,_>NuHz4?< NA\O?<NATO`"NVTaHICaaGTxza4ATJGg$/ /Af?Ka> _*_A,SGfN^NuQ?N/ ?<9NA\0NuHz?< NA\`p  pRamdisk Full!q Press any key pFile not found!q Not enough RAM \*.*PN (:*&@(@ 86!.!6ab0<C L0QpAC0Qz | `Reset Proof Ramdisc 1.8 HiSoft 1988-90 09 S@HR@3 ?9:T2R<3$R3҂y3 A3""KSp"QA "KrQNuHiSoftBBBp* bAv vAb!vAR ~A>!~A* rA!r 8:!Nu:/gNA Nu:/gNpNu:/gN"o0/ S@r2/ ҁAMP! A/gH/ fNr""""""""""""""""""""""""""""""""QQpNu2<QQpNu xphZ~libZ~bin\clink.ttpbin\lc1.lctpdtaxitcrlffilnDoOneabortfilnfstarsxsiveCopy10Copy20Copy30Copy90vNormal2clr_dkfiloopPinitmeDmy_bpbnew_rwnoroomold_rwram_rwreset2sec_lpsignonjDoFiles*DoOne20DoOne30DoOne90StartupWorkDirRcopybpbPcp_boot new_bpbold_bpbour_bpbVram_bpbsec_lp2CopyThemDiskFull|OneDir05OneDir10OneDir20OneDir30(bpb_fsizcopynamevcurdriveOdiskfulldrivermv@itstherekeystatePnotthereram_boot&read_ramreformatContDrivHxe ContSlasHh CreateDiHr DoFiles0H,5 DoFiles0H86 DoFiles0HZ9 DoFiles1H^0 FilesconHt boot_fsiH9SGkl"y?/ KRIb)<:g O:`:p\fRIBW/ a*_JGf?</ ?<NNAPJf(a"_>CQ x.1|B?< NA\BgNA/ ?< NA\Hz?< NA\`~?/ ?<NNAPJm2:@<.g:-߸fA p6QRGg ?<ONAT`Nu Lf*HS$Ig"<\fBH*LaL<\K`B&yJx:<av?/SGk/ &z S@ LIQ$<\fR"LA,+fM/?< NA\Hz1?< NA\Bg/?<=NAP:/9F/??<?NAO ??<>NAX?NBg/?<NAX?NBg/?<=NAP2:?<?Hk?<WNAO ??<>NAXG,Q*(_,_>NuHz4?< NA\O?<NATO`"NVTaHICaaGTxza4ATJGg$/ /Af?Ka> _*_A,SGfN^Nu?N/ ?<9NA\0NuHz?< NA\`p  pRamdisk Full!q Press any key pFile not found!q Not enough RAM \*.*PN (:*&@(@ 86!.!6ab0<C L0QpAC0Qz | `Reset Proof Ramdisc 1.8 HiSoft 1988-90 09 S@HR@3 ?9:T2R<3$R3҂y3 A3""KSp"QA "KrQNuHiSoftBBBp* bAv vAb!vAR ~A>!~A* rA!r 8:!Nu:/gNA Nu:/gNpNu:/gN"o0/ S@r2/ ҁAMP! A/gH/ fNr""""""""""""""""""""""""""""""""QQpNu2<QQpNu XpdtaxitcrlffilnDoOneabortfilnfstarsxsiveCopy10Copy20Copy30Copy90vNormal2clr_dkfiloopPinitmeDmy_bpbnew_rwnoroomold_rwram_rwreset2sec_lpsignonjDoFiles*DoOne20DoOne30DoOne90StartupWorkDirRcopybpbPcp_boot new_bpbold_bpbour_bpbVram_bpbsec_lp2CopyThemDiskFull|OneDir05OneDir10OneDir20OneDir30(bpb_fsizcopynamevcurdriveOdiskfulldrivermv@itstherekeystatePnotthereram_boot&read_ramreformatContDrivHxe ContSlasHh CreateDiHr DoFiles0H,5 DoFiles0H86 DoFiles0HZ9 DoFiles1H^0 FilesconHt boot_fsiH #include #include #include #include "wrsc.h" /* global variables */ OBJECT *menu_ptr; short screenx,screeny,screenw,screenh; int radio; int deskflag,finished=0; int checked; char edit[20]; void initialise(void) { if (appl_init()) exit(EXIT_FAILURE); if (!rsrc_load("WRSC.RSC")) { form_alert(1,"[1][Resource file error][ Quit ]"); exit(EXIT_FAILURE); } deskflag=0; rsrc_gaddr(R_TREE,Menu1,&menu_ptr); menu_bar(menu_ptr,1); wind_get(DESK,WF_WORKXYWH,&screenx,&screeny,&screenw,&screenh); graf_mouse(ARROW,NULL); *edit=0; radio=DRadio1; } void setdesk(OBJECT *newdesk) { wind_newdesk(newdesk,ROOT); /* force the AES to redraw the whole screen */ form_dial(FMD_FINISH,0,0,0,0,screenx,screeny,screenw,screenh); } void deinitialise(void) { if (deskflag) { setdesk(NULL); deskflag=0; } menu_bar(menu_ptr,0); rsrc_free(); appl_exit(); } int handle_dialog(OBJECT *dlog,int editnum) { short x,y,w,h; int but; form_center(dlog,&x,&y,&w,&h); form_dial(FMD_START,0,0,0,0,x,y,w,h); form_dial(FMD_GROW,x+w/2,y+h/2,0,0,x,y,w,h); objc_draw(dlog,0,10,x,y,w,h); but=form_do(dlog,editnum); form_dial(FMD_SHRINK,x+w/2,y+h/2,0,0,x,y,w,h); form_dial(FMD_FINISH,0,0,0,0,x,y,w,h); dlog[but].ob_state&=~SELECTED; /* de-select exit button */ return but; } /* * copy a string into a TEDINFO structure. */ void set_tedinfo(OBJECT *tree,int obj,char *source) { char *dest; dest=((TEDINFO *)tree[obj].ob_spec)->te_ptext; strcpy(dest,source); } /* * copy the string from a TEDINFO into another string */ void get_tedinfo(OBJECT *tree, int obj, char *dest) { char *source; source=((TEDINFO *)tree[obj].ob_spec)->te_ptext; /* extract address */ strcpy(dest,source); } void set_button(OBJECT *tree,int parent,int button) { int b; Afor (b=tree[parent].ob_head; b!=parent; b=tree[b].ob_next) if (b==button) tree[b].ob_state|=SELECTED; else tree[b].ob_state&=~SELECTED; } int get_button(OBJECT *tree,int parent) { int b; b=tree[parent].ob_head; for (; b!=parent && !(tree[b].ob_state&SELECTED); b=tree[b].ob_next) ; return b; } void test_dialog(void) { OBJECT *dlog; int result; rsrc_gaddr(R_TREE,TestDialog,&dlog); set_tedinfo(dlog,DEditable,edit); set_button(dlog,DParent,radio); result=handle_dialog(dlog,DEditable); if (result==DOK) { get_tedinfo(dlog,DEditable,edit); radio=get_button(dlog,DParent); } } void handle_menu(int title,int item) { char *aboutstr; switch (item) { case MAbout: rsrc_gaddr(R_STRING,AAlert,&aboutstr); form_alert(1,aboutstr); break; case MQuit: finished=1; break; case MCheckme: checked^=1; menu_icheck(menu_ptr,MCheckme,checked); break; case MDialog: test_dialog(); break; case MInstall: if (deskflag) { deskflag=0; setdesk(NULL); } else { OBJECT *temp;  deskflag=1; rsrc_gaddr(R_TREE,NewDesktop,&temp); temp[0].ob_x=screenx; temp[0].ob_y=screeny; temp[0].ob_width=screenw; temp[0].ob_height=screenh; setdesk(temp); } break; } menu_tnormal(menu_ptr,title,1); } void handle_events(void) { short mbuff[8]; for (; !finished;) { evnt_mesag(mbuff); if (mbuff[0]==MN_SELECTED) handle_menu(mbuff[3],mbuff[4]); } } int main(void) { initialise(); handle_events(); deinitialise(); return EXIT_SUCCESS; } ?+?<NHn?.?<NB9<N`@Jy~o?9~N]*N^#f _ NNV.@ @g @g` |FC2`< @g` |JC2`" @g @g` |NC2` |r-PBn*yfBm?. nApNJg00.24.Bf n n*yf0`,Rn*yfRm n-P f`N^ _ N/9fNVl#fpN<N`@.  Ji .. AESPATH PRG /\_ ESPATH ~TX i )AESPATH TXT bY^Cb``X!NuHz?<&NN\O o"h, PATHf =A:f Y\f fBQ!zB/B?<?<KNABgNAJHz,?< NAB?< NA#! BgHxZ?<1NAAES path patch Version 1.1 Copyright 1990 HiSoft p @g @g`?-HnHntN ./N@w*yjHmN*@tBf"n*yjA""""*yj@ @g`B/9n n#n(yn)l4)|Bl#n?.t<Nj` @g`?.t<Nj` n*yj` @g`X<*yj?-HnHk N*yjHmN*@tBf/.*yj?-HmN `^ @g`#j`T`F @g`<*yj0-R@?Nn-@"n"*yjA""""`#j`NN2B9<N`@p`N^#f _ NNV/ G/9j yb#j*yj-ASA=ABn0.24.Bn,:.H E*yj(C| FfRn`0.n @??=@U2.H A*yj(N 6.n0J02R@Q#j0.nR@B3JAJ"|Dr=pNgAJ//< nCz4Ed(Hy2?< nA0|0?NE|`Hy2?< ?<NE|` @g @g`N*yjA"C""""A"-H/.?<HnHy/<P/<QN?-@`D @g`:B.A-H/.?<HnHy/<P/<QN?-@`/.?</.double); unsigned short *seed48(unsigned short *); void srand48(long); double tanh(double); extern int _FPERR; #ifndef max #define max(a,b) ((a) > (b) ? (a) : (b)) #endif #ifndef min #define min(a,b) ((a) <= (b) ? (a) : (b)) #endif #endif jACrpNgN *yj-@rAg-BvCf&*yjA"CrpNg 0+ @g`/.Nt`, @ g`<Nr7n"`?9:N]*` @g`?.N` @g`/.HyN`j @ g`0*yj+m4|+|N$?9:N]*`2 @g`(*yj+m4|N?9:N]*`#jN^ _TNNV/ G/9j |r P#j*yj0-mS@=@#j/9.A0|?NG-@ |r2SA n0Hyr/.?<N#F-@.Nj n |r f n "|r" nRP n / n4?N @fHk?<NF7@0+ y2Ae:Hyr/</<Hy/</<r2+ /N`^Jyo<<N.N y@tBf ?+NX?+N?9~N]*&_NuNV ncn/9?.HnN A"|rpNf |C~"Q` |C~"QHy/</<Hy/</<A//<*yj/-?<N>7@?+NJg/9<N7@`obt(a,b,c,d) _vxplss(18,a,b,c,d) #define Flopver(a,b,c,d,e,f,g) _sxpps(19,a,b,c,d,e,f,g) #define Scrdmp() _vxv(20) #define Cursconf(a,b) _sxss(21,a,b) #define Settime(a) _vxm(22,a) #define Gettime() _mxv(23) #define Bioskeys() _vxv(24) #define Ikbdws(a,b) _vxsl(25,a,b) #define Jdisint(a) _vxs(26,a) #define Jenabint(a) _vxs(27,a) #define Giaccess(a,b) _dxss(28,a,b) #define Offgibit(a) _vxs(29,a) #define Ongibit(a) _vxs(30,a) #define Xbtimer(a,b,c,d) _vxsssf(31,a,b,c,d) #define Dosound(a) _vxc(32,a) #define Setprt(a) _sxs(33,a) #define Kbdvbase() _rxv(34) #define Kbrate(a,b) _sxss(35,a,b) #define Prtblk(a) _vxp(36,a) #define Vsync() _vxv(37) #define Supexec(a) _lxg(38,a) #define Puntaes() _vxv(39) #define Floprate(a,b) _sxss(41,a,b) #define Blitmode(a) _sxs(64,a) int _mediach(int); /* force GEMDOS media change */ #endif D@ n TN^ _\NNV/. /.AhN@.@rAf/. /./* * The Towers of Hanoi program in Lattice C * * lc -csf -v -w -rr -O -Lavg hanoi.c * * Copyright (c) 1990 HiSoft */ #include #include #include #include #include #define max_rings 25 #define left 0 #define middle 1 #define right 2 #define space 50 #define gap 10 /* v_opnvwk input array */ short work_in[11]={1,1,1,1,1,1,1,1,1,1,2}; /* v_opnvwk output array */ short work_out[57]; short handle; /* virtual workstation handle */ unsigned int ring_height,full_height,max_width,pole[3]; short highest[3]; unsigned int (*poles)[3]; void draw_ring(unsigned int which_pole,unsigned int size,enum {DRAW=2,ERASE=0} type,unsigned int start) { unsigned int xstart,ystart; short xy[4]; vsf_interior(handle,(int)type); xstart=pole[which_pole]-size/2; ystart=full_height-space-start*ring_height; xy[0]=xstart; xy[1]=ystart; xy[2]=xstart+size; xy[3]=ystart+ring_height-2; if (type==ERASE) vr_recfl(handle,xy); else v_bar(handle,xy); } void realmove(unsigned int source, unsigned int destination) { unsigned int ring_width; ring_width=poles[highest[source]-1][source]; /* erase source ring */ draw_ring(source,ring_width,ERASE,highest[source]); poles[highest[source]-1][source]=0; highest[source]--; /* draw destination ring */ highest[destination]++; poles[highest[destination]-1][destination]=ring_width; vsf_style(handle,highest[destination]); draw_ring(destination,ring_width,DRAW,highest[destination]); } void move(unsigned int howmany, unsigned int source, unsigned int work, unsigned int destination) { if (howmany<=1) realmove(source,destination); else { move(howmany-1,source,destination,work); realmove(source,destination); move(howmany-1,work,source,destination); } } int main(void) { short junk; /* unused variable */ unsigned int i,num_rings; clock_t tm; appl_init(); /* start AES */ handle=graf_handle(&junk,&junk,&junk,&junk); /* find AES handle */ v_opnvwk(work_in,&handle,work_out); /* open workstation */ max_width=(work_out[0]-gap*4)/3; full_height=work_out[1]; for (i=0; i<3; i++) pole[i]=(max_width+gap)*i+max_width/2+gap; do { printf("Number of rings to move: "); scanf("%d",&num_rings); } while (num_rings<=1 || num_rings>max_rings); poles=malloc(max_rings*sizeof(*poles)); ring_height=(full_height-2*space)/max_rings; graf_mouse(M_OFF,NULL); v_clrwk(handle); vsf_color(handle,BLACK); /* initialise first pole */ for (i=0; iNuHy/</< AjO"O~"QNNuHy/</<AO"O~"QNXNuHy/</<AjO"O~"QNNuHy/< /< AjO"O~"QNNu7yNuNVA`/ GpN&_Nu /N[NW=@ nfRHy/</<NJgHy/< /< N`Hy /<(/<)N*N| kfHyJ/< /<NN^Nur yP P6HCBCHC$BNuNVA`/ GpN&_Nu /N[+@ @g`, |ZC""2 |dC~"Q`b @g @g`, |nC""2 |xC~"Q`( |C""2 |C~"QNa.Hy/<K/<LNHy/<K/<LNA//</<NaHy/</<NNa.Hy,/< /<NJgHy/<?NHyb/<H/<INHy/<./</NN Hy/<I/<JNHy(/<G/<HNHyr/<K/<LNNHy/<D/<ENlHy/<?/<@NVHyH/<I/<JN@Hy/<1/<2N*NuHy/</<NHy/</<NHy/</<NTNHNuNVHy/</<NIA//</<NIHy/</<NIA//</<NN^ _TNNa.Hy$/<2/<3NXJg B+`.HyX/<(/<)N4Jg |`|Na.NuNVHy/<9/<:NHy/<7/<8NHy/<7/<8NHy 2/<*/<+NHy ^/<"/<#Nn `N^NuNVpNd n//./. NaHy /</<Na n//<P/<QNaHy /</<NaHn/<P/<QN~A//<P/<QNTJ@cA//<P/<QNT4SBHBBBHB B6@z\EgNHy /<//<0Nz |!C~"QHy! /</<HkNNuA//<P/<QHy!@/</<Hkj/<P/<QNSRHy!F/< /< HkjNNuHy /</<NIA//<P/<QHy!R/</<Hk/<P/<QNSRA//<P/<QN,NuA//<P/<QHy!X/</<Hk/<P/<QNSRHy!\/</<HkN*N@NuA//<P/<QHy!p/</<Hk`/<P/<QNSRHy!z/</<Hk`NA`//<P/<QHy!/</<Hk/<P/<QNSRHy /</<NIA//<P/<QNNuThis program deliberately does not copy any programs into the AUTO folder onyour hard disk as you may already have the appropriate tools.The ramdisk mentioned in the Installation Guide is on Disk 3 asRAMINST\HRAM150K.PRG. If you aren't already using a ramdisk then you willprobably want to copy this to your AUTO folder.If you don't already use an improved file selector (especially if you have1.0 or 1.2 ROMs) then we recommend copying the HiSoft File Selector fromDisk 2 (FSEL\HFSEL.PRG) to your AUTO folder. See FSEL\HFSEL.TXT from disk 2.You will need to set up the Environment variables so that the Latticeprograms can find the files that you have installed. Setting theenvironment variables from the editor is discussed on page 47 of Volume 1;the variables themselves are described on page 52.Installation completePress any key to continuePAUSEDISKNAME A: LC5DISK Lattice C Disk Do you have exactly 512K (half a megabyte) of RAM ?Do you have exactly one megabyte of RAM ?Normally the installation program will format the disks itneeds for you. If you wish to use your own high capacitydisks then you should have already formatted them. PressCtrl-C if you wish to quit this program nowto use your own pre-formatted disks ( ) ? \MKDIR Directory for To change the main of a directory, just type in the full path.To accept the name in brackets just press ReturnC:\LC\Enter the root (base) directoryBIN\executablessys\H\compressed headersHEADERS\uncompressed headersSYS\A//<P/<QHy7X/</<Hk/<P/<QNSRHy7^/</< HkNNuA//<P/<QHy7h/</< HkV/<P/<QNSRHy7r/</<HkVNNuA//<P/<QHy7|/</<Hk/<P/<QNSRHy7/</<HkNfNuAjC~"QHy7/</<HkN8NuAVCL~"QHy7/< /<HkLN NuA//<P/<QHy7/</<HkB/<P/<QNSRHy7/</<HkBNNuAjC~"QHy7/</< HkNNuAC~"QHy7/< /< HkNXNuNNNN$NN0NN0Nu<4NN<5NNNuNVHy7/</<AO"O~"QNHy7/</< AO"O~"QNN^NuHy7/< /< ABO"O~"QNrHy7/</<ABO"O~"QNHNu+ Jg,Hy7/< /< AVO"O~"QN+JgNj+ Jg,Hy7/</<AO"O~"QN+ JgVHy8/< /< A`O"O~"QNHy8/</<AO"O~"QNr+Jg,Hy8/</< AO"O~"QN>+Jg,Hy8(/</< ALO"O~"QN + Jg,Hy82/</<AO"O~"QNHNuHy88/< /< AjO"O~"QNHy8D/</<AO"O~"QNNNjN~<3NN$Nu| || B+B+B+ | NlNuN<2NNnNHy8L/< /< AjO"O~"QN<1NzNNNNNuNNN*<2NTHy8Z/</<AjO"O~"QNߦ<1N"N`N0N|| || ||| | NNPNuHy8b/</<Hy8x/</<Hy8/</<N@Hy8/< /< Hy8/< /< Hy8/< /< N@Hy8/< /< Hy8/</<Hy8/</< Nٖ@NuNVA6+H"CC"2RkN^ _\NNV+@rAg+BvCfA]"O"2N+@rAg+BvCfLA//</<Hy8/</<Hn/</<NSRA]"O"2N*N^ _\NBk+@rAg+BvCfv+@rAg+BvCf |7f]"O"2N+@rAg+BvCf |7\]"O"2N+@rAg+BvCfv+@rAg+BvCf |8]"O"2NJ+@rAg+BvCf |8]"O"2NNuNVpNdpNd2+p@e??=@Hy8/</< n//./.Hn/</<NSRA//</<6.H CA//</<Hn/</<NSRA//</< n//. /.Hn/</<NSRA//</<AO"O~"QN~02R@QN^ _N<4NHy8/</<Hy8/</<NHy8/</<Hy9/</<N<5NHy8/</<Hy9/</<N^Hy8/</<Hy9/</<N6Hy8/</<Hy9/</<NHy9/</<Hy9/</<NHy9/</<Hy9/</<NNuNVpNdHy9"/</<NI n//. /.NIHy9*/</<NپN^ _ NNV<6N\+Jg,Hy8Z/</<AO"O~"QN٤+Jf +Jg+@r:Af(k|:B.A//</<N$Hy92/</<NIA//<P/<QNHy8/</<N+JgBHy96/</<AO"O~"QNPHy9Hy9|/< /< N(Hy9/</< N+JgN&Nu+Jg N`+JgNTNuNVHy9/</<N@Hy9/</<NЮ@Hy9/<*/<+NД@Hy9/<-/<.Nz@Hy:"/</<N`@ Hy:>/</<NF@+Jf.Hy:X/</<N"@+Jg NN"Hy:p/</<N@ Hy:/< /< N@ Hy:/</<N@ Hy:/</<NϨ@ Hy:/< /< Nώ@Hy7/</<Nt@Hy:/<%/<&NZ@Hy:/< /< N@@Hy;/</<N&@Hy;$/</<N @Nd+Jf4+Jf*+Jf +Jf+Jf +JgN+ JgN2+ JgN~+Jf*+Jf +Jf+Jf + JgN+ Jf +JgND+ JgN+JgN0+JgN+JgN+JgN\+Jf +JgNr+Jf +JgN <2N6+Jg~+JgPHy8L/< /< AjO"O~"QNtNԲN <1NNNFNN`"NԎN<1NNN"NN`l+JgHHy8L/< /< AjO"O~"QNN6N<1NlN~N|`Nx<1NT+JgNӬ+ JgN<3N0NdN+Jf+Jf +JgNN^Nu|||NNuNմ<2NNӘ<1NNN0NNNuNV |;Bx1D6PH"Cf@C~"Q |;vx2D6PH"Cf@C~"Q |;x3D6PH"Cf@C~"Q |;x4D6PH"Cf@C~"Q |<x5D6PH"Cf@C~"QNa.rp1??@A//</<NaHy<&/</<Na.C4PH Bf@A//<O/<PNaNa.02R@QNa.Hy<*/<G/<HN Na.Hy`N N.N^NuHyBD/< /< NȜNu |BRC~"QHyBX/< /< NpNNuNHyBd/< /< NPHyBr/< /< N:NNuNVpNdpNd+Jg2HyB/< /< NI n//./.NI`HyB/</<NI n//. /.NǼN^ _NHyB/</< HyB/</< NVNuHyB/</< HyB/</< N,NuHyB/<B/<CNFN |C Cj~"QN<1N |CC~"QNFN*HyC/</<NN̺NȈN,NNu<3N֌ |C8CB~"QNVNu kfHyCHyC/</< N( |C8Cj~"QAjC~"QNzNb<2NըHyC/</<NNT<1NՆNǘNNNNˊNN kfHyC/< /< Ǹ`HyC/<$/<%Nf` @g`bNHyD/</<NRHyD&/</<N n4H(*.n* n"."n6H$- n0R@ n0&_N^ _NRRNV/ G{ nf NW=@ ndx?.NYJ@f`dNX$-@HnzNW |RC~"Q0.|A@9RHnNXH-@?.NY-@/.NW&_N^ _TNNV nR@t:Bf(U nNbA0|A?N` ?".0+@e&??7@ nt4+" 02R@Q".RA7A0+$.2Ab nt4+"B0+`&_N^ _NNVpNd/ G|d n//./././. /.<N7@&_N^ _NNdNV/ G|d n//./. N67@0. 24+Be`0. n24+Bc0+n =@2+n0. @e:??7@ n4+nHBBBHB""nz:+(02R@Q0+n7@0+$.2Ab nt4+"B&_N^ _NNdNdNdNdNdRkSkNdNd\:/vpNvpNvpNvpNvpNvpNvpNvpN~vpNvvp Nnvp Nfvp NjvpNVvpNZvpNRvpNJvpNBvpN.vpN&vp*Nvp+Nvp,Nvp-Nvp/Nvp0Nvp1Nvp6Nvp9Nvp:Nvp;NvpNv p?Nv p@NvpANvpBNvpCNvpENvpFN~vpGNvvpHNnvpINfv pJN^ _6 "$// ////??<KNAO,_&_NuvpLN.v $?//pNNvpONv pVN vpWN(_?NATN(_?NA@TN _02// /???<NMO,_&_Nu _2// /??<NMO,_&_Nu _2// /??< NMO,_&_Nu _2// /??<NMO,_&_Nu#|l#|p?<NMO&y|p y|lN#|l#|p?<NMO&y|p y|lN#|l#|p?<NMO&y|p y|lN#|l#|p?<NMO&y|p y|lN#|l#|p?<NMO&y|p y|lN#|l#|p?<NMO&y|p y|lN#|l#|p?< NMO&y|p y|lN#|l#|p?< NMO&y|p y|lN#|l#|p?<NNO &y|p y|lN?<NNTNu?<NNTNu?<NNTNu _$_// / ?<&NNO&_Nu#|l#|p?<NNO &y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?< NNO&y|p y|lN#|l#|p?< NNO&y|p y|lN#|l#|p?< NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO&y|p y|lN#|l#|p?<NNO &y|p y|lN#|l#|p?< NNO&y|p y|lN#|l#|p?<!NNO&y|p y|lN#|l#|p?<"NNO&y|p y|lN#|l#|p?<#NNO&y|p y|lN#|l#|p?<$NNO&y|p y|lN#|l#|p?<%NNO&y|p y|lNNV/ G|t9p2Jg.ANdb`.A0?N&_N^ _TNNV/ G|t9p3Jg ANdb.Jf 9p4ASA+ Bc"<SAA Hk Npp4&_N^ _TNNV/ G|t9p4@+ Ab29p4ARA0 n 9p4@Rp4`9p4@S@+ Af* n 9p4@Rp4?9bN`J9p3Jg ANdbN-@0. n n@t Bf ?9bNZ&_N^ _XN/ G|t< NR< NJ&_NuNVBk2+H$&. o`B n6+H$@xDf` n6+H$NRk`N^ _ NNVpNd/ G|t/./. /.Nt&_N^ _ NNdNV/ G|t<NBkr2+$&. c`:HkN"+@r Ad` nt4+"Rk`r2+$&. b nt4+"B&_N^ _ NG|tp@ Nu HNu>p02@0Nu0/lD@?@ _TN _0@NS@gVf JAgmJ`JNuNu _ am znNH@B@H@Nu>p02@0NuNFQN(NQNNQNNFQN @g,NVf _.IN! R _.IFfSNNfRN Am~>G@l7xARA'drNr _gRNДA _N RAQN Am$~>懾@l??0<`7x02Nup _Hyp`NgRACSNuACSNu @lpNu"_.HN PN Am~>懾@l??0<`F7x02Nug @0(` @ ("P$_gR (OgS!Q NO p6gNz @oJ$//?< NAOHyp?< NAO N:Hyp?< NAO2<0<QQ2 _?<LNA _p HypSN/H@N NNu?@N 0NNuN NNu l0NW??<NAONu /lD/@ _XN//Nf"N "ANu//Nz"N*"ANu.HA/HGBGЇ.HGHAHGBGЇNu.HA/HGBGЇ.HGHAHGBGЇNu lD lD`NDNu lD`HA AfHA.B@H@H@HG>HG0NuHAe8B?<eRF`ЁeQ`eQ< SNupNu#}"(gT} g" gDopHyp: |N "_.@!@/ //?<?<JNAO N"_.@/ Nu o0 @f #p6NL @f#p6N8 @f !yp6N& @f0( WN"yp6#H3@ iN _ON _ @Nп}n _p HypyN N _> N _> N _ B@H@N _ H@B@H@NAnd#p <"<}DNfNbNlNRNINApANdRINSTALL.BAT 0123456789ABCDEFCONAUXPRNnot enough memory to runOut of rangeSet element out of rangestack overflow near   H02 *6" & .0<,D$L(( $ 8 $$, (,8".0,.""0"2","<"."."..."..\*.*6B4*444,*Xr"r:b:0H6N8x *  *  0FL$, \|$ J  " $ 0$,6H(\4 (,$ " B""L$42D $  64T X.$  .(L8 6B R>: L\: \>*4 & .$ ".j.H( j 6 2 VL (  &_N^ _ NNV/ Gr/9j n#j*yjHUN(@*yj-@rAg-BvCfL*yjJmc>2-SAp@e0??=@/.?.Hk8N4Hk8N@02R@Q#j&_N^ _XNNV/ Gr r f` |>^CJ"""" n C8""""/. ?<.<N n "|>^rpNf/. ?<Nx n 0J@cb n 2SAp@eL??=@/. ?.Hk8NT |>^CJ""""/. ?..<N02R@Q&_N^ _\NNV/ GrHnHnN/9j n#j0. 2*yj4-Bdl2-SA0. @e\??=@/.?.HnNHnHnNACrpNf n0pX#j`02R@Q#jp`&_N^ _NNV-n n//<O/<PHn/<O/<PNz*yf m//-/-A//<O/<P?<Nx` @OS`N^ _XN/9fNV#fpN/ Gr0. n2Adr n2SA0.@eZ??=@ n /?.NG-@/9j n#j*yj-@ @g @g`< n -P n /NJg n 0p#jX`` @g @g @ g`4 n /NJg n 0p#jX``v @g @g`f n -P n /N>Jg n 0p#jX`F nX /NJg n 0p#jX``#j02R@Qp`&_N^#f _NNV/ Gr/9j n #j*yj-C4BH BA//</<HU/</<NzBnt4. B*yj5@v CcRn`=n=n n c(r v6.$|0z:. E*yjRn0.r NB|0x8. D*yj2.RAHABAHA AB5HUN@tBf` Rn`p#j&_N^ _\NNV/ Gr/.NI/9j n#j/9n n  P#np*yj@(yn0,@;@;l n +P #n#j&_N^ _PNGr |>^C<""""r9pA??@6+6B2AH A!|J02R@QNuInvalid name %1Name %1 already exists - ignoredNV/ G/. HnHnHnHnN/9j n #j*yj mcBm#j/. ?<?<*?.?.?.?.N27@R/. ?.Nz7@R/. ?+RNK <?.?.?.?.?.?.?.?.N=@0+R`&_N^ _\NNVr*yf2-$&-d mt4-"RmN^ _TN/9fNV#f/ G-n n-PBnBn n-P-n nP.@r\Af Rn`Z0. @g``6 @g`<\ND` <\N8Jnc<\N(Sn`Bn.@r~Af<_N`.@r_Af<~N`.@rAc.Bv Ce.DzEe<\N<\N.@=@ ndetdx8.&|0Nd n e"x |<.*0r NB|0N:0.r NB|0N$< N` .NR.@rAgv6.(*.c``N nB/.?.NG-@ n -P n  .`&_N^#f _NNV/ GBnBnBn nt4."P.@r\Af Rn`\0. @g`Bn0. .B2A|0=@Rn nt4."P.@r0Ae.Bv9Cc``.@r AgSn0.@`R @g`r2. A\Rn`2 @g``$ ncr2. A\RnSn`Bn.@r~Af |_`.@r_Af|~ nPc`4r2. A.@rAf`RnRn`rA//<P/<QNyxR@=@-n n-P n  g" nCrpQNf p`p`lHnr2. /NHn/.?.N_ n  g(/. n$/NJz2RAHABAHA /N n p`&_N^ _NNV n P xD2pNJg7n Tp` `p`N^ _PNNV/ G/. ?.A`""O O O GN&_Nu /NM\0+T`&_N^ _\NNV0. 24+VBf6 n P xD2pN& n P `2 n P xD2pN n P p`N^ _PNNV/ G7nV/. ?. A`""O O O GN>&_Nu /NM\&_N^ _PNNV/ G n /?. NG-@ n -P n-P/.?< Hn/</<HnN,2.p@m:??=@2.\AnH A"n8.H&02R@Q n4.RBH"B&_N^ _ NNV/ G n /?.NG-@ n -P n-PB=| nR@t-Bf=|Rn`=| nR@t@Bgv n4.H"P.@r0Ae.Bv9Cc`2 .r N.E8HDBDHD&Ѓ0-@Rn` .6.H"N`&_N^ _\NNV/ G8 . 4.HBBBHB"Ё`&_N^ _\NNV/ G8/.?.N-@ nT0 @f& nX4 Bf n 0 n0` n BP nBP nX=P nT=P/.?.NV-@/9j n#j*yj0-mR@=@0-mR@=@#j n 046.Cd n 0 n046.Cd n00.24.Bf` n=P/.?.N-@`f&_N^ _NNV/ G8/9j n#j*yj:;|;|p@p@ |OC2p@ |OC B BmBmBmBm#j&_N^ _XNNV/ G8/9j n#j*yj*@+U+U;| Bm;|BmBmBm;|Bm#j&_N^ _XNNV/ G8/9j n#j*yj=m=m=U#j n "n~"Q/9j n#j*yj;n;n:#j&_N^ _PNNV/ G8-nBn n@tBgR-nRn`0.`&_N^ _XNNV/ G8/9j n#j*yj/NR@*yj;@/-NxR@*yj;@#j&_N^ _XNNV/ G8/. ?.N-@ n vC2pN n &_N^ _\NNV/ G8Jnf 0<`R/. ?.N$-@ n=P/. ?.N -@ nX046.Cf` =n`0.`&_N^ _\NNV/ G8=n0.24. Bfp`"/. ?.NX=@Jnlp``&_N^ _PNNV/ G8 n -P n-P n&_N^ _\NNV/ G8 n -P n-P n`&_N^ _XNNV/ G8/. ?.N-@/9j n#j*yj- rApNJg**yj- rApN*yjB `&*yj- rApN&*yjB *yj=m=m#j&_N^ _\NNV/ G8 n /?. NF-@ nT=P nX=P nf`\Bn n /?.N -@Hn?.?.ANJg`$Rn0.24.Bf` n=P`&_N^ _ NNVRkp`N^ _PNNV/ G8Bk/. ?.A`""O O O G8N&_Nu /N0+`&_N^ _\NNV0.24+Bf7n p` `p`N^ _PNNV/ G87n n /?.N=@ nf p`F`B/. ?.A`""O O O G8Nj&_Nu /ND0+`&_N^ _\NNV0. 24+Bf7np` `p`N^ _PNNV/ G87nHn ?. A`""O O O G8N&_Nu /N0+`&_N^ _PNG8HkHkHkHkN7@ |OCNuNV/ GL?. ?+?+?+?+NB=@Jnl.?<Hya/<"/<#Nx7@0.`@`4?</=@?+?.*yj?- N`40.*ynm??.N=@?+*yj?- ?.N#n?. N#jN^ _\NNV?. N=@Jnc?. ?<HnHnHnHnN7@/9j2.A #j*yj gZ/9n m P#n=m =m 0. @g`0.n=@` @g`0.n=@` @g`0.k=@` @g`0.k=@`j @g`0.n=@`P @g`0.n=@`6 @g`0.k=@` @g`0.k=@`JnlBnJnlBn0.2*yn4-Bc=m0.2*yn4-Bc=m?.?.?.N#n#j?. N N^ _XNNV/ GL n0?N=@JncnSk2+0.@e8??=@4.RBA 6.C0 """"202R@Q n0?N>7@ n0?N7@ nBP&_N^ _XNNV/ GL2+p@e@??=@2.A =P?.N>7@?.N7@02R@QBk&_N^NuNV/ GL?.NJ@R`&_N^ _TNNV/ GL?.?</./<N7@&_N^ _NNV?+?<Nd7@=n=n 0.n S@=@0. nS@=@?+<Hn/</<N?+A//</<N?.N=@Jnc*?.?.?. ?. ?.2.A TNN^ _ NNV?</<U n|<+*N B|@?.?. N`: @g`0<U nv6+$N ?.?. N~`N^ _PNNV/ G-nBnByB+=|/9j n#j*yj-@ @g` -m ?.?. n /Nr`8 @g`?.?.*yj/- NN` @g` Rn`#j nP0?v C2pNJg`Rn`L&_N^ _XNNV/ G/9j n#j*yj@rAfN29p@e??7@/9n4+H BA#n*ynJg-A(yj,BgJ*ynJfx(yj,DzEf^?,Nt@*yn-Af>*yj/9rA#r(yr8 *yn9m9m#r#n02R@Q *yj mafN/9nA#n/9rA#r(yr8 *yn9m9m#r#n#j&_N^ _XNUndoBS o "oB0/S@m Q _O N o "o0/S@mQ _O N o "o0/S@m Q _O NJf'|` 'yNuNVBn*yf mv@Jg( nb mvt4."BP~RnRv`*yfRv nbr2. AB(~N^Nu/9fNVv#fp N/ GZA`/ GZND&_Nu /N g-kv yb,'P` yb,-PvN.~@rAf& g-kv'|`p`*Bn|r2.|$&.b4 n p0.|,Dp0.|"@)~@fRn|`r2.|$&.b" n p0.|,Dp@fp0.|$@*~@r=AfBnzr2.z$&.bP n|dF|<.| F(~Dp@g(Rn|r2.| A"nx8.z&~Rnz`r2.z$&.b nt4.z"Bp``&_N^#f _NNNNV/ G^=||Bn=|=|Bn-n/ n :EH E g&/9j n 4BH B s#j*yjJmc-Jg.JgHmr2- / n 4?N'@Jl$*yjBm +D7@#j``R +*yj4-H"l&Bm n 2?NH'@'|` n 2?NH'@` n 2?NH'@ n 2AH AHs*yj8PDHDBDHD&/N#j` n 2?NH'@Jl +D7@`Bk&_N^ _\NNV/ G^?./.?. NJkf + n0` n0&_N^ _ NNV/ G^?./.?. NlJkf + n0` n0&_N^ _ NNNNNV/ G^ n e" n2 b2. AH A g`\2. AH AHs6.PCHCBCHC$/N/9j4. BH B s#j*yj:BmBmB-#j&_N^ _XNG^r-p??7@2+AH A'02R@QNu@:*.*NRn*yfRmRnNN nRPRnRnNRnRnRnRnRnRnRnRnRnWn\nWn\nSnNV/ GźHk>/<@tBgRr2.$&. b0. nv6.$>2.3>@t\Bf 0.R@=@Rn`Bnr2.$&. bD nRnRm`N^ _ N/9fNV#f |x C~"QN:R@=@?.Hk>N=|>2.3>@tBf=n02S@Q n7c=|7=n=|HyxX/</<N=n2.SA3>@t\Bg0.\>RnHyxZ/</<N0.B3>0.|AS@@>N^#fNuGźNNu[ ][]Prompt box too big for screen OOPS%AcceptCancel:*.RSCNVpNpN/ G6 n//./. N? n//./.N6<C=F=n0.24.Bo`Bn0.$.2An" n<.H*Cp@f 0.`R n6.H$@ n2.nH,Dg`Rn`Rn`n".0R@`&_N^ _NNNRkRkRkNVpN/ G6Bk0+$. 2Ab( n|<+*Cp@gRk`0+`&_N^ _ NNVpN/ G6Bk0+$.2AbT6+*.8DbD np0+Fp@g& nt4+""nz:+(Rk`7k.Jg>".0+@e&??7@ nt4+" 02R@Q".RA7A0+$.2Ab nt4+"B0+`&_N^ _NNVpN/ G6 n//./././. /.<N7@&_N^ _NNNV/ G6 n//./. N67@0. 24+Be`0. n24+Bc0+n =@2+n0. @e:??7@ n4+nHBBBHB""nz:+(02R@Q0+n7@0+$.2Ab nt4+"B&_N^ _NNVp N/ G60.$.2Ac .=@ n //./.N<7@0.24+Bd Jnf nB`0.n24+Bc0+n=@2.nSA0.@e:??7@ n t4+""n:+nHEBEHE(02R@Q0.$. 2Ab nt4."B&_N^ _NNNNNRkSkNN\:/ _02// /???<NMO,_&_Nu _2// /??<NMO,_&_Nu _2// /??< NMO,_&_Nu _2// /??<NMO,_&_Nu#>#B?<NMO&yB y>N#>#B?<NMO&yB y>N#>#B?<NMO&yB y>N#>#B?<NMO&yB y>N#>#B?<NMO&yB y>N#>#B?<NMO&yB y>N#>#B?< NMO&yB y>N#>#B?< NMO&yB y>N#>#B?<NNO &yB y>N?<NNTNu?<NNTNu?<NNTNu _$_// / ?<&NNO&_Nu#>#B?<NNO &yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?< NNO&yB y>N#>#B?< NNO&yB y>N#>#B?< NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO &yB y>N#>#B?< NNO&yB y>N#>#B?<!NNO&yB y>N#>#B?<"NNO&yB y>N#>#B?<#NNO&yB y>N#>#B?<$NNO&yB y>N#>#B?<%NNO&yB y>NNV/ GF=|2=|=|=|Bn=n/ n4H(*.n* n"."n6H$- n0R@ n0&_N^ _NRRNV7n BkBk7n HnHnHnHnHkNN^ _XNNV/ GZ7|dBk7|  n7P .мZ//./</. HkN n0 &_N^ _NNV/ GZ?<e?.NR&_N^ _TNNV/ GZ7|7|7|7n .@=@/</</.HnHkN&_N^ _NNVpN7n7nBk7n /</</./<HkNN^ _NNV/ GZ?<?.?. n//. /.N&_N^ _NNVVpN/ GZ7|7|=nV=nX n//. /.N=@\ nP\e=|O\7n\7n 2.\SAp@e8??=@Z nv6.Z$@:.ZEH E1@^02R@Q2.\AH ABh^/</<HnVHn^HkN&_N^ _NNV/ GZ?< ?.?. n//. /.Nt&_N^ _NNNVpN/ GZ?<r?.?< n//. /.N.&_N^ _NNNNNNV7n Bk7|7n =n/<Hn/<HnHkN0.`N^ _\NNV/ GZ?< ?. ?.N`&_N^ _XNNV/ GZ?<?. ?.Nn`&_N^ _XNNV/ GZ7| 7|Bk7n Bn=nHn/<Hn/<HkN n0 n0 n 0 n0&_N^ _NNV/ GZ7|'Bk7|7n =n=n/<Hn/<HnHkN n 0 n0&_N^ _NNV/ GZ?<?. ?.Nb`&_N^ _XNNNNNNVZpN/ GZ n//./.N=@Z nPZe=|OZ2.Zp@e8??=@\ nv6.\$@:.\EH E1@^02R@Q7|tBk7nZ7n /./</<Hn^HkN&_N^ _NNV/ GƄ=|F=|=|BnBn=n=n=n=n/</<HnHnHyHnN n 0 n00.`&_N^ _NNV/ GƄ=|G=|=|BnBn=n=n=n=n=n=n=n=n/</<HnHnHyHnN n 0 n00.`&_N^ _NNV/ GƄ=|MBn=|BnBn/</<HnHnHyHnN n0 n0 n 0 n00.`&_N^ _NNV/ GƄ=|N=|=|=|Bn=n /<HnHnHnHyHnN0.`&_N^ _\NNV/ GƄ=|OBn=|BnBn/</<HnHnHyHnN n0 n0 n 0 n00.`&_N^ _NNV/<N-@-n ."$.dp`09249Bd"29yHABAHA .N|-@ ."$+c-k ."$.d-nRy/.N-@/9j n#j*yj*#+n+|+| #jp`N^ _XNNV . Ю`N^ _PNNV/ GƄ .^//p02@0Nu0/lD@?@ _TN _0@NS@gVf JAgmJ`JNuNu _ am znNH@B@H@Nu>p02@0NuNFQN(NQNNQNNFQN @g,NVf _.IN! R _.IFfSNNfRN Am~>G@l7xARA'drNr _gRNДA _N RAQN Am$~>懾@l??0<`7x02Nup _Hy*NgRACSNuACSNu @lpNu"_.HN PN Am~>懾@l??0<`F7x02Nug @0(` @ ("P$_gR (OgS!Q NO gNz @oJ$//?< NAOHyS?< NAO N:HyZ?< NAO2<0<QQ2 _?<LNA _p HyN/H@N NNu?@N 0NNuN NNu l0NW??<NAONu /lD/@ _XN//Nf"N "ANu//Nz"N*"ANu.HA/HGBGЇ.HGHAHGBGЇNu.HA/HGBGЇ.HGHAHGBGЇNu lD lD`NDNu lD`HA AfHA.B@H@H@HG>HG0NuHAe8B?<eRF`ЁeQ`eQ< SNupNu#~"(gT} g" gDopHy |N "_.@!@/ //?<?<JNAO N"_.@/ Nu o0 @f #NL @f#N8 @f !yN& @f0( WN"y#H3@ iN _ON _ @Nп~n _p HyCN N _> N _> N _ B@H@N _ H@B@H@NNV/ Gǂ=|ZBn=|=|Bn-n -n/<HnHnHnHyHnN nW n0.`&_N^ _NNV/ Gǂ9^Jg.AN`.A0?N&_N^ _TN/ Gǂ< N< N&_NuNVBk2+H$&. o`B n6+H$@xDf` n6+H$NHRk`N^ _ NNVpN/ Gǂ/./. /.Nt&_N^ _ NNGǂp@ Nu vpNvpNvpNvpNvpNvpNvpNvpN~vpNvvp Nnvp Nfvp NjvpNVvpNZvpNRvpNJvpNBvpN.vpN&vp*Nvp+Nvp,Nvp-Nvp/Nvp0Nvp1Nvp6Nvp9Nvp:Nvp;NvpNv p?Nv p@NvpANvpBNvpCNvpENvpFN~vpGNvvpHNnvpINfv pJN^ _6 "$// ////??<KNAO,_&_NuvpLN.v $?//pNNvpONv pVN vpWN(_?NATN(_?NA@TNA" <NB _ONA"psNB _ONA#b <N2"<4NNNNNthNaNNwNON`NcXN>N^NNNGNNN:N pANH+ ReaH- ReaW+ ReaW- Rea Rea Rea Rea ReaCleareaFilleaVFlipeaHFlipeaLineeaDataeaMaskeaCopyeaANDeaOReaXOReaCovereaZoomeaCancelaHH $$DD  PROGDEFBOXCHAR TITLE FORM MENU ALERT FrStringFrImageObject bject CONAUXPRN|0123456789ABCDEFnot enough memory to runOut of rangeSet element out of rangestack overflow near  &*   *        .,(    "    . ,    & @4   8>*D  N :  " (F $N "0">*`Z* . , ~ "0"^ 2 F " , *| &t.&t2 8@P@V "*^D 0 \*   6( B*       D"    H$$$$$        8  ,$"8"((" dPJ8*  "  &" > ,     (  ,B6   2$ F    B "      6 6   , $84 ("     $"    $&   *    2  J "*   22(  F *.4  &   &,(  t:<. $ *@   $:    "(XH" D(8pL&44<  8h  ,$          6       6         $   "p((8 V"4vF &8n    ,  (2  *.& (0J" * TB:H*` F    0`  &,  ^: > &r     &    2(F $   bV   < Xb     B6 $   @B ,0 $ * . .   0< * "&  " @ 4, (6@  ,   @.&F,   J$ $"  "  @"        "    &$V(*2 ,( . @ $**"".    T""6$(&  ""   .*0$6 " xX""lN$".$ 2 $$42DD $ $& & 8 $$" x  L *,< 8 &  2 "&0     R  :* 4   &Z&R &&&   F F * > 6 * 8 <$ ,$  $B   " 8(Fd8 . :        0(   Z ~& ,2 : `.&       &&B    B 6 <@v&6 P~*       , *l  (""" " $*n ^* " 2 ,           *00 *$$0:   v* LL. &$00  *$00   ($00    , 4"H&0D " ">  (*  * B " F <*  6  L 6   0  @L  <*   l8  0@2.  $ NZ$ 8 $p6(.F$$ ,0  2, . ": 8     <  6 B X<>B$$$v<|  2"  *"*FhBX.*,& @D"",<* .0b >~Z8  $  X@d@$"(86  .  , 2* &   V   $ , 0 T " >  V$ *  8(,,F6 < * 4 22L, F$$x28,F(@$H$$: .J> VB PF* N HHJ* $N>   $ "*"4 nh,6""@0(F4*.  &n .$*$J< "("Z$ 800 H& 4$  b& B. *z X v8F$ H$0 &     <& z 8   64T X.$  .R& ,F $v,VL8 6HB R8 D*2J$ lD.j\: >: p "@ "2 :<""B682 2>**>:@*$ L 2d 22 B: 2 F. 6 2 VL ( 2R "R ": : @ BX " $: F @8 Dxh : 4( T8    *z@ F F F  "2 F : @ : X "L ": 2@ 2  2 ".j.H( `> 4$ (t%(Nt$t(]0C]`123Border Size: ___XXXOKCancelCancel__XOKName of TreeDeleteEdit123456789 12345Prefix: _XCopyMoveText:123456789 123456789 123546789 123456789 123456789 123546789 12345_AXTemplate:XA_AXValid:X5x _AXX_XSameCancelOK10Name:20304050601020304050601234567890123456_XCancelOKName :Text:123456789 123456789 123456789 123456789 123456789 123456789 12345_AXX_XSameCancelOKName:102030405060X_X0123456789012345_XCancelOKChar:Name: DeskFiEdFlTrObMiFiBoTe About WERCS - D 1 D 2 D 3 D 4 D 5 D 6 - File - New N Load L Save S Save As R - Quit Q Language P - Save Prefs - Import Image I Cut X Copy C Paste V - Cancel Undo Abandon Edit A - Delete BS - Edit - Selectable ^S Default ^D Exit ^X Editable ^E Radio Button^R Touch Exit ^T Hide ^K Selected ^V Crossed ^C Checked ^Y Disabled ^G Outlined ^O Shadowed ^B UnHide Child^U Extras E --- Flags - Form D Menu M Alert A Free String R Free Image L - Tree - Box B Text T BoxText U Image K ProgDef P IBox I Button E BoxChar C String S FText F FBoxText G Icon J Title V -- Object-- Auto Size W Auto Naming U - Auto Snap Y Char Snap Z - Find Text F Find Name G - Sort O Test T Expert K - Misc - Select No H- - Transparent ^Q Opaque ^P -- Fill -- Size... ^A- - Border - Left ^L Centre ^M Right ^N- Large ^J Small ^I - -- Text --@_3_3XCancelOKFind String:@__XCancelOKFind Name:Cancel__XOKName of Free StringDeleteFTEXTA6Text: _;XEditCopyMoveMake Alert__ICONSort OrderFirst:Top to BottomLeft to RightBottom to TopRight to LeftAlphabeticTop to BottomLeft to RightBottom to TopRight to LeftSecond:CancelOKAlphabetic Desk File Your message here -123456 QuitCPascalModula-2FORTRANAssemblerBASICMixedUpperLowerLanguageCancelOKExtra Information1234X co-ord _91234Y co-ord _91234Width _91234Height _9999Index in Tree ___9999Child Number ___9999No Of Children ___9999Extended Type ___9CancelOKTEXTFTEXTBOXTEXTFBOXTEXTStringButtonBoxIBoxButtonImageIcon999Parent ___9Cancel__XOKName of AlertDeleteEditFCopyMoveMake FreeFormMenuAlertFrStrFrimg Desk File Edit Flags Tree Object Misc Fill Border Text About WERCS - D 1 D 2 D 3 D 4 D 5 D 6 - File - New N Load L Save S Save As R - Quit Q Language P - Save Prefs - Import Image I Cut X Copy C Paste V - Cancel Undo Abandon Edit A - Delete BS - Edit - Selectable ^S Default ^D Exit ^X Editable ^E Radio Button ^R Touch Exit ^T Hide ^K Selected ^V Crossed ^C Checked ^Y Disabled ^G Outlined ^O Shadowed ^B Un Hide Children ^U Extras E - Flags - Form D Menu M Alert A Free String R Free Image L - Tree - Box B Text T BoxText U Image K ProgDef P IBox I Button E BoxChar C String S FText F FBoxText G Icon J Title V -- Object-- Auto Size W Auto Naming U - Auto Snap Y Half Char Snap Z - Find Text F Find Name G - Sort O Test T Expert K - Misc - Select Number H- - Transparent ^Q Opaque ^P -- Fill -- Size... ^A- - Border - Left ^L Centre ^M Right ^N- Large ^J Small ^I- -- Text --@00Object Number : ___9CancelOKSelect Object by IndexٌPPRRL@@NQDPDPDPDPDPDքDRDRDRNL@_@~~~~~~~pppUNppppUNppppUNpplpxǀxx\h\h\h^l^d^d^bZc[a[a[a[`٘`ƙ```@ 'O<<|>@? ??'?O???O?'??  |>@<<O'  @OO''  ? ? |>@|>@<<?9L2O''   @@?@ 'O2wuҗuҘt2wuwuO' @?\HMH\HLHMH   3 誨@@]\UU]\@@?A!!!!!!!!!"UT**:**ـ  UWUЀРPPPP[R["Y۶ٶ۶PUEŠDOUUU????????????UQ*UQ*@DTJ)RP$  J$(9Ng1sBBBB NBB)BBB   !#%6G G X Y Z k l        O 54   / k <B      j r s     % 7 8# 9 > L N S a c h s u z     7;F Ohevwx    8<PT A    T4 t   T4 t   T4 t  4 t 4  t  4  t4  4 C#t =%@ C' G       %CL  Au  A A        8 Tp'1;E ' 41 P;  lEC  +2 5 CM < A      !' !01 !L; !hEC6 ! ! I PS Y  P P  ! _ e h  k  n  q  t  w  z } P$#  (  9 !J"[#gx.%-  &'()*+,-$?/>0$152E3U4e5u678 9 : ; < =>.F@EA%B6CFDVEf?vUGT H I J@ K L M N O P Q R  S T$ F1 dVcW?XPYaZr[\]^_ ` a b c U  e f0g1h2!i31j4k5l6m7n - o0p1q2r3 s4 t5 u6 v7 w8x9yAzB {C |D }E ~F  : ! ! d m   y  0123456789ABCDEF    ! " ",  "H "d   0123456789ABCDEF   D"3     ""      CF   "    ("B       #8"# (N   %  &#(!#D       '    2  @  N \#` t { 1 ~  PP      P                (%                     #|  ' "'# # ## $ $$ $@ $\  $x       #         %  ,2  $ C(H$  $     (\  (j(x (% J%& E&.&P5&r;&'& &  &@ '! '> '`.'E' ' ' ( #  (,/   P P  B          '  .  4 < P#0DINSX]$# br    !"# .%- &-'>(O)`*q+,-$?/>01234506E7Z8o 9 : ; < =>5.F@EAB)C9DIEY?iUGT! Hz I J@ K L M N O P Q R S  T F$ dVc)W2XFYZZn[\]^_ ` a b c#U7 e0 f0g1h2!i31j4k5l6m7nK o0p1q2r3 s4 t5 u6 v7 w8x9yAzB {C |D }E ~F X $ % d 6   0123456789ABCDEF  > % %< %X  %t %  0123456789ABCDEF ,  %RY \((),$,-.>?t?A AC4DF4HJlL4\?@A6AC^DF^IJL^\v`l NkNeHNeH?+NSpNQ7@NF07@pANeNuNVpNeHHy/</<A~h//<Hk Hk HkHkNVf7@r p??7@2+AH A1|02R@Q7|"Hk/< /<HkHk&/<6/<nNS<?<HkNQ7@<?<Hk NQ7@<?<HkNQ7@<N?<Hy$/<U/<VNH @fN |C~"Q |C~"QNuNV.Jgz? n :EH E g&/9n( n 4BH B s#n(*yn(Jmc-Jg.JgHmr2- / n 4?Nj,'@Jl$*yn(Bm +D7@#n(``R +*yn(4-H"l&Bm n 2?NjH'@'|` n 2?NjH'@` n 2?NjH'@ n 2AH AHs*yn(8PDHDBDHD&/NZ#n(` n 2?NjH'@Jl +D7@`Bk&_N^ _\NNV/ G{?./.?. NJkf + n0` n0&_N^ _ NNV/ G{?./.?. NlJkf + n0` n0&_N^ _ NNeHNeHNeHNV/ G{ n e" n2 b2. AH A g`\2. AH AHs6.PCHCBCHC$/NX/9n(4. BH B s#n(*yn(:BmBmB-#n(&_N^ _XNNV/ G{?<?./<Nj<-@?<?./<Nj<'@Jl +D7@p`$` ?<?./.Nj<-@ +`&_N^ _TNG{r-p??7@2+AH A'02R@QNu@:*.*NV/ G}0 .7@r2. .Nf'@ ./v6. "+Nf"*'E km"n6+H$-kSkJgJkl".k n0r0+@n(D??7@ n4+H" 02S@Q&_N^ _NNV/ G}0Jl| .D-@`B./.?./././. /.N.Jg> n4H(*.n* n"."n6H$- n0R@ n0&_N^ _NRR nRPn RnG}DBkBkNuNV/ G~$=|h=|=|BnBn=n=n//<@tBgRr2.$&. b0. nv6.$>2.3>@t\Bf 0.R@=@Rn`Bnr2.$&. bD nRnRm`N^ _ N/9n$NV#n$ |LpC~"QNiR@=@?.Hk>Nj\=|>2.3>@tBf=n02S@Q n7c=|7=n=|HyL/</<N=n2.SA3>@t\Bg0.\>RnHyL/</<N0.B3>0.|AS@@>N^#n$NuG~*NNu[ ][]Prompt box too big for screen OOPS%AcceptCancel:*.RSCNeHNeHRnRnNeHNeHRkRkRkNVpNeH/ G~Bk0+$. 2Ab( n|<+*Cp@gRk`0+`&_N^ _ NNVpNeH/ G~Bk0+$.2AbT6+*.8DbD np0+Fp@g& nt4+""nz:+(Rk`7k.Jg>".0+@e&??7@ nt4+" 02R@Q".RA7A0+$.2Ab nt4+"B0+`&_N^ _NNVpNeH/ G~ n//./././. /.<N7@&_N^ _NNeHNV/ G~ n//./. N67@0. 24+Be`0. n24+Bc0+n =@2+n0. @e:??7@ n4+nHBBBHB""nz:+(02R@Q0+n7@0+$.2Ab nt4+"B&_N^ _NNeHNeHNeHNVpNeHpNeH/ G~ n//./. N:7@0.24+Be 0+S@=@ n//./.N 7@0.kR@7@Bk0+$.2Ab" n|<+*Cp@f 0+`b nv6+$@ n2+kHABAHA,Dg`Rk`Jkf` Sk`r".0R@`&_N^ _NNeHNeH\:/NVpNeH/ G~Bnr2.$&. bL np0.,Dp @g, np02@0Nu0/lD@?@ _TN _0@NS@gVf JAgmJ`JNuNu _ am znNH@B@H@Nu>p02@0NuNFQN(NQNNQNNFQN @g,NVf _.IN! R _.IFfSNNfRN Am~>G@l7xARA'drNr _gRNДA _N RAQN Am$~>懾@l??0<`7x02Nup _HymNgRACSNuACSNu @lpNu"_.HN PN Am~>懾@l??0<`F7x02Nug @0(` @ ("P$_gR (OgS!Q NO mgNz @oJ$//?< NAOHyn?< NAO N:Hyn?< NAO2<0<QQ2 _?<LNA _p HymN/H@N NNu?@N 0NNuN NNu l0NW??<NAONu /lD/@ _XN//Nf"N "ANu//Nz"N*"ANu.HA/HGBGЇ.HGHAHGBGЇNu.HA/HGBGЇ.HGHAHGBGЇNu lD lD`NDNu lD`HA AfHA.B@H@H@HG>HG0NuHAe8B?<eRF`ЁeQ`eQ< SNupNu#"(gT} g" gDopHym |N "_.@!@/ //?<?<JNAO N"_.@/ Nu o0 @f #mNL @f#mN8 @f !ymN& @f0( WN"ym#H3@ iN _ON _ @Nпn _p HynN N _> N _> N _ B@H@N _ H@B@H@NvpNvpNvpNvpNvpNvpNvpNvpN~vpNvvp Nnvp Nfvp NjvpNVvpNZvpNRvpNJvpNBvpN.vpN&vp*Nvp+Nvp,Nvp-Nvp/Nvp0Nvp1Nvp6Nvp9Nvp:Nvp;NvpNv p?Nv p@NvpANvpBNvpCNvpENvpFN~vpGNvvpHNnvpINfv pJN^ _6 "$// ////??<KNAO,_&_NuvpLN.v $?//pNNvpONv pVN vpWN(_?NATN(_?NA@TNA" <NB _ONA"psNB _ONAl#n <"<Ng\NNNUNE,N#NN\NCvNNL`N4N0NNlN 0pANe^H+H-W+W-ClearFillVFlipHFlipLineDataMaskCopyANDORXORCoverZoomCancelHH $$DD FORM MENU ALERT FrStringFrImageObject bject CONAUXPRN0123456789ABCDEF |not enough memory to runOut of rangeSet element out of rangestack overflow near    "$<&\ ,6JB     b   8& (0rL .  0 <4  z        "((J8  ( "*$ *4",0 2($$P"..      (8 $ , b& 2(  l  "< >  "*T0(@ B2  2 F : : p "@ "2 4 D*2J$ lD.d\:   "2 F X H<" >:( $L 22 B: . 6 2 VL ( >".j.H( >  D$"Select Colours to use:Colour 0NoneDataMaskBothColour 1NoneDataMaskBothColour 2NoneDataMaskBothColour 3NoneDataMaskBothColour 4NoneDataMaskBothColour 5NoneDataMaskBothColour 6NoneDataMaskBothColour 7NoneDataMaskBothColour 8NoneDataMaskBothColour 9NoneDataMaskBothColour ANoneDataMaskBothColour BNoneDataMaskBothColour CNoneDataMaskBothColour DNoneDataMaskBothColour ENoneDataMaskBothColour FNoneDataMaskBothQuitOKEnter area to import000X ___999000Y ___999000Width ___999000Height ___999QuitOKUse MouseIconImage~~~~~~~pppUNppppUNppppUNppl;DE Zcd y      3<= R[\ qz{       HLU Y]f jn{ $ s($     FKP U       ejo  t           %!$"#$  &  '  ,(+)*+ '-< .  3/2 012 .4X 5  :69 78$9) 5.;t <  A=@ >>?C@H <MB C  HDG E]FbGg ClI J  OKN L|MN JP Q  VRUSTU QW  X  ]Y\Z[\ X^ _  d`cabc _e f  kgjhij fl8 m  rnqopq! m&s+'0 %3T p        1    ' WERCS example program for HiSoft BASIC and Power BASIC defint a-z library "gemaes" ' 10k should be plenty to Leave, variable checks on, no window rem $option l10,v+,y+,u+ ' the GEMAES.BH file must be accessable REM $INCLUDE GEMAES.BH ' additional constants CONST type_tree=0,type_object=1,type_string=5,ob_sizeof=24 CONST FMD_START=0, FMD_GROW=1, FMD_SHRINK=2, FMD_FINISH=3 ' get the header file created with WERCS REM $INCLUDE WRSC.BH ' global variables DIM SHARED junk,deskflag,menu&,finished,checked DIM SHARED screenx,screeny,screenw,screenh,edit$,radio DEF FNobject&(tree&,object)=tree&+object*ob_sizeof SUB INITIALISE ' firstly load the resource file IF FNrsrc_load("WRSC.RSC")=0 THEN ' this alert can't be in the resource file of course.. junk=FNform_alert(1,"[3][Resource file error][ Quit ]") SYSTEM END IF ' now install the menu deskflag=0 junk=FNrsrc_gaddr(type_tree,Menu1,menu&) menu_bar menu&,1 ' get the screen size junk=FNwind_get(0,WF_WORKXYWH,screenx,screeny,screenw,screenh) graf_mouse 0,0 ' set default values for dialog box edit$="" radio=DRadio1 END SUB ' set or reset the desktop pattern SUB SETDESK(newdesk&) junk=FNwind_set(0,wf_newdesk,PEEKW(VARPTR(newdesk&)),PEEKW(VARPTR(newdesk&)+2),0,0) ' cause the AES to re-draw the whole screen form_dial FMD_FINISH,0,0,0,0,screenx,screeny,screenw,screenh END SUB SUB DEINITIALISE IF deskflag THEN SETDESK(0) : deskflag=0 menu_bar menu&,0 junk=FNrsrc_free END SUB ' a general routine to produce a dialog box and handle interaction ' the return result is the exit object number DEF FNhandle_dialog(d&,editnum) STATIC x,y,w,h,but,t& form_center d&,x,y,w,h form_dial FMD_START,0,0,0,0,x,y,w,h form_dial FMD_GROW,x+w\2,y+h\2,0,0,x,y,w,h junk=FNobjc_draw(d&,0,10,x,y,w,h) but=FNform_do(d&,editnum) form_dial FMD_SHRINK,x+w\2,y+h\2,0,0,x,y,w,h form_dial FMD_FINISH,0,0,0,0,x,y,w,h t&=FNobject&(d&,but) IF PEEKB(t&+ob_type+1)=G_BUTTON THEN POKEW t&+ob_state,PEEKW(t&+ob_state) AND (NOT mask_selected) END IF FNhandle_dialog=but END DEF ' set a tedinfo record ' NOTE: does not handle complex templates SUB set_tedinfo(tree&,object,newted$) STATIC t&,max,i t&=PEEKL(tree&+object*ob_sizeof+ob_spec) max=PEEKW(t&+te_txtlen)-1 '-1 for the null IF LEN(newted$)0c) AND (iparent DO WITH Dialog^[Cur] DO IF Cur=button THEN INCL(ob_state,SELECTED); ELSE EXCL(ob_state,SELECTED); END; Cur:=ob_next; END; END; END SetButton; PROCEDURE GetButton(Dialog:PObjectArray; parent:CARDINAL):CARDINAL; VAR Cur:CARDINAL; BEGIN Cur:=Dialog^[parent].ob_head; WHILE Cur<>parent DO WITH Dialog^[Cur] DO IF SELECTED IN ob_state THEN RETURN Cur; END; Cur:=ob_next; END; END; END GetButton; PROCEDURE TestDialog; VAR dialog:PObjectArray; BEGIN junk:=rsrc_gaddr(tree,WRSC.TestDialog,TempAdr); dialog:=ADDRESS(TempAdr); SetTedinfo(dialog,WRSC.DEditable,EditString); SetButton(dialog,WRSC.DParent,RadioButton); IF HandleDialog(dialog,WRSC.DEditable)=WRSC.DOK THEN GetTedinfo(dialog,WRSC.DEditable,EditString); RadioButton:=GetButton(dialog,WRSC.DParent); END; END TestDialog; PROCEDURE HandleMenu(title,item:CARDINAL); BEGIN CASE item OF WRSC.MAbout: junk:=rsrc_gaddr(string,WRSC.AAlert,TempAdr); PcharToString(TempAdr,AlertString); junk:=form_alert(1,AlertString); | WRSC.MQuit: Finished:=TRUE;| WRSC.MCheckme: Checked:=NOT Checked; junk:=menu_icheck(PObject(MenuAdr),WRSC.MCheckme,Checked);| WRSC.MDialog: TestDialog;| WRSC.MInstall: IF DeskFlag THEN SetDesk(ADDRESS(LONG(0))); DeskFlag:=FALSE; ELSE junk:=rsrc_gaddr(tree,WRSC.NewDesktop,TempAdr); WITH TempAdr^ DO ob_x:=screenx; ob_y:=screeny; ob_width:=screenw; ob_height:=screenh; END; SetDesk(TempAdr); DeskFlag:=TRUE; END;| END; junk:=menu_tnormal(PObject(MenuAdr),title,TRUE); (* normal state *) END HandleMenu; BEGIN Initialise; Finished:=FALSE; Checked:=FALSE; REPEAT GetActivity(e); WITH e DO CASE Event OF MessageEvent: WITH Mess DO CASE MessageType OF MN_SELECTED: HandleMenu(Message[0],Message[1]);| (* other messages here *) END; END;| (* other types of event here *) END; END; UNTIL Finished; DeInitialise; END WercTest.K { a WERCS test program for Personal Pascal from OSS } { (also known as Atari Pascal Plus in Germany) } PROGRAM WERCTEST; {$I GEMSUBS.PAS } {$I WRSC.INC } CONST WF_NEWDESK = 14; FMD_FINISH = 3; WF_WorkXYWH=4; TYPE Object_Type = RECORD ob_next: Short_Integer; ob_head: Short_Integer; ob_tail: Short_Integer; ob_type: Short_Integer; ob_flags:Short_Integer; ob_state: Short_Integer; ob_spec: LONG_INTEGER; ob_x: Short_Integer; ob_y: Short_Integer; ob_width: Short_Integer; ob_height: Short_Integer; END; Object_Ptr = ^Object_Type; ObjectArr=ARRAY [0..500] OF Object_Type; ObjectArrPtr=^ObjectArr; VAR menu:Menu_Ptr; junk:integer; screenx,screeny,screenw,screenh:integer; radio:integer; checkflag,deskflag:boolean; edittext:Str255; { this is a C-type AES call not built-in to the standard library } PROCEDURE Form_Dial(fo_diflag,fo_dilittlx,fo_dilittly,fo_dilittlw, fo_dilittlh,fo_dibigx,fo_dibigy,fo_dibigw,fo_dibigh:Short_Integer); VAR int_in: Int_In_Parms; int_out: Int_Out_Parms; addr_in: Addr_In_Parms; addr_out: Addr_Out_Parms; BEGIN int_in[0]:=fo_diflag; int_in[1]:=fo_dilittlx; int_in[2]:=fo_dilittly; int_in[3]:=fo_dilittlw; int_in[4]:=fo_dilittlh; int_in[5]:=fo_dibigx; int_in[6]:=fo_dibigy; int_in[7]:=fo_dibigw; int_in[8]:=fo_dibigh; AES_Call(51,int_in,int_out,addr_in,addr_out); END; PROCEDURE SETDESK(desk:Dialog_Ptr); FUNCTION Addr(VAR what:Dialog_Ptr): Long_Integer; EXTERNAL; FUNCTION WPeek(what:Long_Integer): Short_Integer; EXTERNAL; BEGIN {$P-} Wind_Set(0,WF_NEWDESK,Wpeek(Addr(desk)), Wpeek(Addr(desk)+2),0,0); {$P+} { now cause the AES to re-draw the whole screen } Form_Dial(FMD_FINISH,0,0,0,0,screenx,screeny,screenw,screenh); END; PROCEDURE Initialise; BEGIN IF NOT Load_Resource('WRSC.RSC') THEN BEGIN junk:=Do_Alert('[3][Resource error][ Quit ]',1); Exit_Gem; Halt; END; Init_Mouse; Find_Menu(MENU1,menu); Draw_Menu(menu); Wind_Get(0,WF_WorkXYWH,screenx,screeny,screenw,screenh); edittext:=''; deskflag:=FALSE; radio:=DRadio1; END; PROCEDURE DeInitialise; BEGIN IF deskflag THEN SETDESK(NIL); Free_Resource; END; {$P-} PROCEDURE SetButton(DialogPtr:Dialog_Ptr; parent,button:Short_integer); VAR Cur:Short_integer; fudge: RECORD CASE BOOLEAN OF TRUE: ( D1: Dialog_Ptr ); FALSE: ( D2: ObjectArrPtr ) END; Dialog:ObjectArrPtr; BEGIN WITH fudge DO BEGIN D1:=DialogPtr; Dialog:=D2; END; Cur:=Dialog^[parent].ob_head; WHILE Cur<>parent DO WITH Dialog^[Cur] DO BEGIN IF Cur=button THEN ob_state:=ob_state | SELECTED ELSE ob_state:=ob_state & (-SELECTED-1); Cur:=ob_next; END; END; FUNCTION GetButton(DialogPtr:Dialog_Ptr; parent:Short_integer):Short_integer; VAR Cur:INTEGER; fudge: RECORD CASE BOOLEAN OF TRUE: ( D1: Dialog_Ptr ); FALSE: ( D2: ObjectArrPtr ) END; Dialog:ObjectArrPtr; BEGIN WITH fudge DO BEGIN D1:=DialogPtr; Dialog:=D2; END; Cur:=Dialog^[parent].ob_head; WHILE (Cur<>parent) AND ( (Dialog^[Cur].ob_state & SELECTED)=0) DO Cur:=Dialog^[Cur].ob_next; GetButton:=Cur; END; {$P+} PROCEDURE test_dialog; VAR result:integer; dlog:Dialog_Ptr; BEGIN Find_Dialog(TestDialog,dlog); Center_Dialog(dlog); Set_DText(dlog,DEditable,edittext,System_Font,TE_Left); SetButton(dlog,DParent,radio); result:=Do_Dialog(dlog,DEditable); IF result=DOK THEN BEGIN Get_DEdit(dlog,DEditable,edittext); radio:=GetButton(dlog,DParent); END; Obj_Setstate(dlog,result,Obj_State(dlog,result)&$FFFE,FALSE); End_Dialog(dlog); END; PROCEDURE Update_Desk; VAR { this type is needed to allow direct ob_ access while keeping compatiblity for Dialog routines } Desk_Ptr:RECORD CASE BOOLEAN OF TRUE:(D: Dialog_Ptr ); FALSE:(O:Object_Ptr ) END; BEGIN IF deskflag THEN BEGIN deskflag:=FALSE; SETDESK(NIL); END ELSE BEGIN deskflag:=TRUE; Find_Dialog(NewDesktop,Desk_Ptr.D); {$P-} WITH Desk_Ptr.O^ DO BEGIN ob_x:=screenx; ob_y:=screeny; ob_width:=screenw; ob_height:=screenh; END; SETDESK(Desk_Ptr.D); {$P=} END; END; FUNCTION handle_menu(title:integer;item:integer):boolean; VAR alertstr:Str255; BEGIN handle_menu:=FALSE; CASE item OF MAbout: BEGIN Find_Alert(AAlert,alertstr); junk:=Do_Alert(alertstr,1); END; MQuit: handle_menu:=TRUE; MCheckme:BEGIN checkflag:=NOT checkflag; Menu_Check(menu,MCheckme,checkflag); END; MDialog:test_dialog; MInstall:update_desk; END; Me1nu_Normal(menu,title); END; PROCEDURE Main; VAR mess:Message_Buffer; finished:boolean; result:integer; BEGIN finished:=FALSE; checkflag:=FALSE; WHILE NOT finished DO BEGIN result:=Get_Event(E_Message,0,0,0, 0, FALSE,0,0,0,0,FALSE,0,0,0,0, mess, junk,junk,junk,junk,junk,junk); IF result=E_Message THEN IF mess[0]=MN_Selected THEN finished:=handle_menu(mess[3],mess[4]); END; {while} END; { main program } BEGIN IF Init_Gem >= 0 THEN BEGIN Initialise; Main; DeInitialise; Exit_Gem; END; END.  * WERCS test program written with DevpacST version 2 * style notes: * subroutines are named in upper-case, everything else * is lower-case * low registers (d0-d2/a0-a2) are trashable, other registers * are used for parameters opt a+ automatic PC mode to save bytes include gemmacro.s include wrsc.i * macro to calculate object addresses OBJECT macro tree,object,result,scratchreg move.w \2,\4 mulu #ob_sizeof,\4 lea 0(\1,\4),\3 endm * the object structure rsreset ob_next rs.w 1 ob_head rs.w 1 ob_tail rs.w 1 ob_type rs.w 1 ob_flags rs.w 1 ob_state rs.w 1 ob_spec rs.l 1 ob_x rs.w 1 ob_y rs.w 1 ob_width rs.w 1 ob_height rs.w 1 ob_sizeof rs.w 0 * various AES constants type_tree equ 0 type_string equ 5 WF_WORKXYWH equ 4 WF_NEWDESK equ 14 FMD_START equ 0 FMD_GROW equ 1 FMD_SHRINK equ 2 FMD_FINISH equ 3 G_BUTTON equ 26 bitSELECTED equ 0 te_txtlen equ 24 MN_SELECTED equ 10 * the program proper move.l 4(a7),a3 base page move.l #mystack,a7 move.l $c(a3),d0 text len add.l $14(a3),d0 data len add.l $1c(a3),d0 BSS len add.l #$100,d0 basepage move.l d0,-(sp) move.l a3,-(sp) clr.w -(sp) move.w #$4a,-(sp) trap #1 shrink memory lea 12(sp),sp bra start INITIALISE appl_init move.w d0,ap_id store the application id rsrc_load #rsc_filename bne.s rloaded_ok * resource load failed form_alert #1,#badrsc_alert bra terminate rloaded_ok graf_mouse #0 mouse is an arrow sf deskflag rsrc_gaddr #type_tree,#Menu1 move.l addr_out,menu_ptr menu_bar menu_ptr,#1 wind_get #0,#WF_WORKXYWH lea int_out+2,a0 lea screenx,a1 REPT 4 move.w (a0)+,(a1)+ copy screen size ENDR clr.b editstring move.w #DRadio1,radio rts * set or reset the Desktop pattern * in:a3=new address SETDESK move.l a3,int_in+4 clr.w int_in+8 wind_set #0,#WF_NEWDESK form_dial #FMD_FINISH,#0,#0,#0,#0,screenx,screeny,screenw,screenh rts DEINITIALISE tst.b deskflag beq.s .nodesk sub.l a3,a3 bsr SETDESK sf deskflag .nodesk menu_bar menu_ptr,#0 rsrc_free terminate appl_exit move.l #$4c0,-(sp) trap #1 * general routine to produce a dialog box and handle interaction * in:a3=dialog address,d3.w=editable object number * out:d3.w=exit object number HANDLE_DIALOG movem.l d4-d7,-(sp) we need some local variables form_center a3 movem.w int_out+2,d4-d7 d4-d7=x,y,w,h form_dial #FMD_START,#0,#0,#0,#0,d4,d5,d6,d7 move.w d6,d0 asr.w #1,d0 add.w d4,d0 =x+w/2 move.w d7,d1 asr.w #1,d1 add.w d5,d1 =y+h/2 form_dial #FMD_GROW,d0,d1,#0,#0,d4,d5,d6,d7 objc_draw a3,#0,#10,d4,d5,d6,d7 form_do a3,d3 move.w d0,d3 return result move.w d6,d0 asr.w #1,d0 add.w d4,d0 =x+w/2 move.w d7,d1 asr.w #1,d1 add.w d5,d1 =y+h/2 form_dial #FMD_SHRINK,d0,d1,#0,#0,d4,d5,d6,d7 form_dial #FMD_FINISH,#0,#0,#0,#0,d4,d5,d6,d7 OBJECT a3,d3,a0,d0 cmp.b #G_BUTTON,ob_type+1(a0) bne.s .notbut bclr #bitSELECTED,ob_state+1(a0) .notbut movem.l (sp)+,d4-d7 rts * set a tedinfo record * in:a3=tree,d3.w=object,a4=source string SET_TEDINFO OBJECT a3,d3,a0,d0 move.l ob_spec(a0),a0 the tedinfo record ptr move.w te_txtlen(a0),d2 max length subq.w #1,d2 * copy up to d2.w chars move.l (a0),a0 destination buffer addr .copy move.b (a4)+,d0 beq.s .done move.b d0,(a0)+ copy char subq.w #1,d2 bne.s .copy up to the limit .done clr.b (a0) rts * extract a tedinfo record * in:a3=tree,d3.w=object,a4=where to copy it GET_TEDINFO OBJECT a3,d3,a0,d0 move.l ob_spec(a0),a0 the tedinfo record ptr move.l (a0),a0 the actual text .copy move.b (a0)+,(a4)+ bne.s .copy rts * select a particular radio button * in:a3=tree,d3.w=parent,d4.w=button SET_BUTTON OBJECT a3,d3,a0,d0 move.w ob_head(a0),d2 .until cmp.w d3,d2 beq.s .done OBJECT a3,d2,a0,d0 bclr #bitSELECTED,ob_state+1(a0) cmp.w d4,d2 bne.s .boring bset #bitSELECTED,ob_state+1(a0) .boring move.w ob_next(a0),d2 bra.s .until .done rts * return which button of a group is selected * in:a3=tree,d3=parent * out:d3=selected button number GET_BUTTON OBJECT a3,d3,a0,d0 move.w ob_head(a0),d2 .until cmp.w d3,d2 beq.s .done OBJECT a3,d2,a0,d0 btst #bitSELECTED,ob_state+1(a0) bne.s .gotit if found move.w ob_next(a0),d2 bra.s .until .gotit move.w d2,d3 result .done rts * handle a particular dialog box TEST_DIALOG movem.l d3/d4/a3/a4,-(sp) rsrc_gaddr #type_tree,#TestDialog move.l addr_out,a3 moveq #DEditable,d3 lea editstring,a4 bsr SET_TEDINFO moveq #DParent,d3 move.w radio,d4 bsr SET_BUTTON moveq #DEditable,d3 bsr HANDLE_DIALOG cmp.w #DOK,d3 bne.s .notok lea editstring,a4 moveq #DEditable,d3 bsr GET_TEDINFO moveq #DParent,d3 bsr GET_BUTTON move.w d3,radio .notok movem.l (sp)+,d3/d4/a3/a4 rts * handle a menu click * in:d3=title,d4=item HANDLE_MENU cmp.w #MAbout,d3 bne.s .1 rsrc_gaddr #type_string,#AAlert form_alert #1,addr_out bra .done .1 cmp.w #MQuit,d3 bne.s .2 st finished bra .done .2 cmp.w #MCheckme,d3 bne.s .3 bchg #0,checked+1 menu_icheck menu_ptr,#MCheckme,checked bra .done .3 cmp.w #MDialog,d3 bne.s .4 bsr TEST_DIALOG bra .done .4 cmp.w #MInstall,d3 bne .5 tst.b deskflag beq.s .nodesk sf deskflag sub.l a3,a3 bsr SETDESK bra .done .nodesk: st deskflag rsrc_gaddr #0,#NewDesktop move.l addr_out,a0 move.w screenx,ob_x(a0) move.w screeny,ob_y(a0) move.w screenw,ob_width(a0) move.w screenh,ob_height(a0) move.l a0,a3 bsr SETDESK bra .done .5 .done menu_tnormal menu_ptr,d4,#1 rts * the main loop of the application * the only interesting events are messages MAIN sf finished clr.w checked .loop evnt_mesag #messagebuf lea messagebuf,a0 move.w (a0),d0 message type cmp.w #MN_SELECTED,d0 bne.s .1 move.w 8(a0),d3 move.w 6(a0),d4 bsr HANDLE_MENU .1 tst.b finished beq.s .loop rts start bsr INITIALISE bsr MAIN bra DEINITIALISE never to return... SECTION DATA rsc_filename dc.b 'WRSC.RSC',0 badrsc_alert dc.b '[3][Resource file error][Quit]',0 SECTION BSS * global variables deskflag ds.b 1 finished ds.b 1 checked ds.w 1 radio ds.w 1 menu_ptr ds.l 1 * these have to remain together screenx ds.w 1 screeny ds.w 1 screenw ds.w 1 screenh ds.w 1 ap_id ds.w 1 messagebuf ds.b 16 editstring ds.b 20 ds.l 100 stack space mystack ds.w 1 (stacks go backwards) * if not linking then include the run-times IFEQ __LK include aeslib.s *** include vdilib.s VDI not required ENDC  #define Menu1 0 #define MAbout 8 #define MQuit 17 #define MCheckme 19 #define MDialog 21 #define MInstall 22 #define TestDialog 1 #define DOK 2 #define DCancel 3 #define DEditable 4 #define DParent 5 #define DRadio1 6 #define DRadio2 7 #define DRadio3 8 #define NewDesktop 2 #define AAlert 0 }Le Menu1Le MLMAboutLMQuitLMCheckmeLMDialogLMInstallLTestDialogLDLDOKLDCancelLDEditableLDParentLDRadio1LDRadio2LDRadio3LNewDesktopLAAlert<$H#T Desk File Other About WERCTEST...- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 Quit Check me- Dialog box... Install desktop A Test Dialog Box OKCancelJUNKJUNKEditable text: _XRadio #1Radio #2Radio #3Tiny text...Floppy Disk[2][Simple Test Program][ OK ]DBDBD BD BD BD BD BDBDBG@@GDDDDDDDDDTDpIRj  2Q   &B   $ + 2   : N e z    -+ ? B %l u ~   Q4    (`|@ $oI|)J$B?< NA)x8 x h9hN2(I9APB/@> NA"j)IA W*j,Jf J-gRMJg"RlH AfR&MRM Rf Gf Vf =fp#@JgN &IMaJf"JfB` _ff Pf` BfZ PfT =fNYIrpg:鉰<0e<<9dҀ`<Ae(<zd"<Fc<ae Ҁ`²$W`2Jfg*BNt&Ip<}bB0,HaN"@$ p lNep@9@D)I@"`BQ)I<`BQ ,o2V@l$)IXB"Y"XI#I2B"2)I4 JfF" lNeT)A ,0BAHAR@&,HCBCHCFC׬.I/ JSB?/ / ?<?<JNAO N NN>`XO , g/?<?<NMPO?<LNAJ =f8RNrtB0m| nҁ&ҁҁ҃҂`.g f Jg)A NNup0,HЀЀr0,b ЀЀNuNVH0I|*n&U0-2-AA0-=@0-=@0-mS@=@0-mS@=@Hnp??,?AN PO0- "UA=A0- $UB=B0- mV@=@6- mVC=CJogSnSnRnRnBg?,Np>?,Np>?,N^p>?,N*Hn?,NOJofSnSnRnRnp??,Np>?,NrHn?,NA./p?r??,Np>?,N0-J@jR@@2- @ m.?- ??,NA./p???,NO(0-3 g8YnYnXnXnp??,NHn?,N.p>?,NO p??,NpL8 N^NuWRSC.RSC[1][Resource file error][ Quit ]NVHnp?BgNL n)h<XCT n!I<)hT`C\ n!ITC)I\)ITp1@N1@6A.///N9@N^NuA)HA)HA)HA:)HAH)HAT)HpN J@g p?NTOA&)HH0<N J@fHzp?N bp>N\Op9@rHld??Nvp>/,dN.a HlnHllHljHlhp?BgN0BBgN$O"B,v9|pNuNVBg/.Nn>n?,l?,j?,hp????r?NPN^NuJlrg BaXOp9@rBg/,dN0<N p$N \ONuNVH?HnHnHnHn/.NF>?.?.?.p?????N0."JAjRAA4.B6.(JDjRDD:.E>???|????~?N>?.?.?.p ?Bg/.NrOB?. /.NR2.$JBjRBB6.C8.*JEjREE<.F>???~?????@,p?N(>?.?.?.p????r?N0/> n 0/>LN^NuNV/ 0.  n p "n$Pf$_N^NuNV/ 0.  n p "P$nf$_N^NuNVH*n0. =u`&0."&Mnf ` =S0.n fL(N^NuNVH*n0. =u`=ux0.2. @g.5x g0.L N^NuNVHnp?BgNHlvp?/.a>pp?/.a4p>/.aOU@f$Hlvp?/.ap>/.aXO9@pN^NuNV0. Q@g@ g0U@g4U@gJS@gL`HnBgp?N.p?NO `t9|`llu?,tp?/,dNPO`Ra,`LJlrgBlrBaXO`89|rHnp?BgN n1lh1lj1ll1ln.a^POp??./,dNN^NuNV`>A)HHp4Np nf(9|0<N|?.?.aBl0<NdXOJlgN^Nua4aa$pNuNVH0&n $n9n9n 0<xN& g6< g4>&n g6@&n g6B0,:L N^Nu NVBl9|)n9n "0<|NN^NuNV9n 0.HH@B@@rHAN^0,N^Nu NV9n 9n 0.HH@B@@r'HAN$ n0 n0N^NuNV9n Bl0.HH@B@"<N0,N^NuNV9n 0.HH@B@@rHAN0,N^NuNV9n 0.HH@B@@rHAN0,N^NuNV9n 0.HH@B@@rHANf0,N^NuNV9n 0.HH@B@@rhHAN>0,N^NuNV9n 0.HH@B@@rHAN0,N^NuNV9n 0.HH@B@@rHAN0,N^NuNV)n 9n 0.HH@B@@"<NA)HN^NupaNV)n 9| 0.HH@B@"< NA)HN^NupaNV)n 9|0.HH@B@"< NNA)HN^NuNVH0&nE JTp0f9n 9n AS2.HHABA "<NL N^NuNV9n9n 9|0<NBl n T0,:N^NuNV)nH9n 9n9n9n 9n"9n$0<NN^NupaNV9n 9n)nHp\NN^NuNV9n 9n)nHpTNnN^NuNV9n )nHpPNTN^NuNV9n)n H0<N6N^NuNV0< N& n0< n 0> n0@ n0B0,:N^NuNV9n )nH0<NN^NuNV9n9n 9n 9n 9n"9n$9n&9n(9n*0<NN^NuNV)nH0<N n 0< n0> n0@ n0B0,:N^NuNV)n H9n0<NFN^NuA"P"3@H@3@ "psNBNuAC C C C C NuA 0A"P"0<NBA:0Nu     !"#$%&'()*+,-./0123 456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}NVH0&H$n-I gHH Bg/ p=?NAPOL.Jk. gH BgpE?NAXOL4 H ?BgrF?NA\OLJg2p> nfL=|p&(f"CH Bg/ p=?NAPOL.-H``CH Bg/ p=?NAPOL.`Dp=@r&f"CH ?/ pBBg?Hx?<BNAO rJWDNAO 0/,(Nupa  (D/* lc -w -v -csfm -Lav -O -M gstlib.c */ /* librarian for GST .bin files (c) k.b.v. controls 02 jun 1989 * read existing archive into memory, and build list of modules * process arguments, and modify the archive list * output a ranlib consisting of comment items * output the modules on the list to tmp file. if ok unlink old and rename * we should be able to sort archive list into single pass order as default. * if we use a|b modifiers, the sorting is not done. * we will do everything in memory, requiring approx 100k for typical archive. * * we must have a module name entry in the .bin file else we have problems * Prospero libraries have wierd module name entries. * if we convert to a more reasonable name in our MODULE structure * then we can continue as per Unix. * ie convert to "WIERD blah blah" to "wierd.bin" * but "normal.ext" remains as "normal.ext" * */ #include #include #ifdef LATTICE #include #include #include #define lmalloc(n) malloc(n) #endif /* #define DEBUG */ #define JAN011980 ((1 << 5) | 1) #define UPDATE 1 #define LOAD 2 #ifdef DEBUG #define D(x) x #else #define D(x) #endif /* * Modes, a la GEM-DOS: */ #define S_IJRON 0x01 /* Read-only */ #define S_IJHID 0x02 /* Hidden from search */ #define S_IJSYS 0x04 /* System, hidden from search */ #define S_IJVOL 0x08 /* Volume label in first 11 bytes */ #define S_IJDIR 0x10 /* Directory */ #define S_IJWAC 0x20 /* Written to and closed */ typedef struct { char d_glob[12]; /* GEMDOS wildcard string from Fsfirst */ char d_mask; /* Attribute mask from Fsfirst */ char d_dirent[4]; /* Offset into directory, MSB first */ char d_dirid[4]; /* Pointer to directory structure in GEM mem */ char d_fattr; /* File attributes */ long d_tandd; /* Time and date words */ long d_fsize; /* File size */ char d_fname[14]; /* File name */ } DMABUFFER; typedef struct tm { int tm_sec; /* Seconds (0-59) */ int tm_min; /* Minutes (0-59) */ int tm_hour; /* Hours (0-23); 0 = midnight */ int tm_mday; /* Day of month (1..28,29,30,31) */ int tm_mon; /* Month (0-11); 0 = January */ int tm_year; /* Year AD since 1900 */ int tm_wday; /* Day of week (0-6): 0 = Sunday */ int tm_yday; /* Day of year (0-365,366) */ int tm_isdst; /* Daylight savings time flag: */ /* Non-standard, they make negative==NA */ } tm_t; typedef unsigned long tand_t; /* we use disk format for time */ #ifndef NARGS tand_t tm_to_tand(tm_t *); tm_t *tand_to_tm(tand_t); void mytime(tand_t *); char *myctime(tand_t *); #else tand_t tm_to_tand(); tm_t *tand_to_tm(); void mytime(); char *myctime(); #endif typedef union any_ptr { char *name; struct mod_info *module; struct cref_info *cref; } PTR; typedef struct list { struct list *next; PTR p; } LIST; typedef struct mod_info { char *name; tand_t date; long size; unsigned char *buf; LIST *xdef; LIST *xref; } MODULE; typedef struct cref_info { char *name; LIST *xdef; LIST *xref; } CREF; #define MALLOC(x) (x *)malloc(sizeof(x)) #define AFTER 1 #define BEFORE 2 #define TRUE 1 #define VOIDP char * /* really want a void * */ LIST *libhead = NULL; LIST *xrefhead = NULL; LIST *beforemod = NULL; LIST *ranlib = NULL; char *aftmodname; extern int errno; int verbose, aftbef, sortflag, keepflag, quitflag; #ifndef LATTICE char *calloc(), *malloc(), *realloc(), *strrchr(), *strchr(); #endif #define addlist(x, y) inslist(x, y, NULL) #ifndef NARGS void inslist(LIST **, VOIDP, LIST *); /* want to check for ptr argument */ void dellist(LIST **, LIST *); void mkxrefs(LIST *, LIST **); void prtxrefs(LIST *); void prtlist(LIST *, char *); int sortxrefs(LIST **, LIST *); int weneed(LIST *, MODULE *); int weload(LIST **, LIST **, MODULE *); int mkcode(int, char *, char *, int); void fatal(char *, char *); void faterr(char *, char *); MODULE *gstread(unsigned char *, unsigned char *); MODULE *mkranlib(LIST *, char *); tand_t rdranlib(MODULE *, char *); LIST *msearch(LIST *, char *); LIST *nsearch(LIST *, char *); CREF *addxsym(LIST **, char *); char *newstring(char *, int); char *cleannm(char *); char *strlower(char *); char *unwierd(char *, int); #else void fatal(); void faterr(); void inslist(); void dellist(); void mkxrefs(); void prtxrefs(); void prtlist(); int sortxrefs(); int weneed(); int weload(); int mkcode(); MODULE *gstread(); MODULE *mkranlib(); tand_t rdranlib(); LIST *msearch(); LIST *nsearch(); CREF *addxsym(); char *newstring(); char *strlower(); char *cleannm(); char *unwierd(); #endif void usage() { fprintf(stderr, "Librarian for GST .bin object files (c) kbv controls 1989\n"); fprintf(stderr, "Usage: gstlib {dlmrtux}[vsk][a|b obmod] library [files..]\n"); fprintf(stderr, "\toptions\td delete modules\n"); fprintf(stderr, "\t\tm move modules\n"); fprintf(stderr, "\t\tr replace modules\n"); fprintf(stderr, "\t\tu update modules\n"); fprintf(stderr, "\t\tl load modules\n"); fprintf(stderr, "\t\tt table [modules..]\n"); fprintf(stderr, "\t\tx extract [modules..]\n"); fprintf(stderr, "\t\modifiers\tv verbose\n"); fprintf(stderr, "\t\t\ta|b obmod with m|r replace after|before obmod\n"); fprintf(stderr, "\t\t\ts sort library for single pass\n"); fprintf(stderr, "\t\t\tk keep module datestamp when extracting\n"); fprintf(stderr, "\tall modified libraries will have a ranlib\n"); exit(1); } int main(argc, argv) int argc; char *argv[]; { char **myargv; char inpbuf[160], *p, *q, *r; int myargc = 0; int i, j; FILE *fp; myargv = NULL; for (i = 1; i < argc; i++) {  strlower(argv[i]); if (argv[i][0] == '@') { if ((myargv = (char **)calloc(sizeof(char *), 200)) == NULL)  fatal("exparg", "duff calloc"); break; } } if (myargv) {  for (i = 0; i < argc; i++) { if (argv[i][0] == '@') { if ((fp = fopen(argv[i] + 1, "r")) == NULL) fatal("exparg", argv[i]); while (fgets(inpbuf, 160, fp) != NULL) { p = inpbuf; while (*p) { while (*p == ' ' || *p == '\t' || *p == '\n') p++; if (*p == '\0' || *p == '#') break; if (*p == '\\' && *(p+1) == '\n') break; q = p; for (j = 0; *p && *p != ' ' && *p != '\t' && *p != '\n'; j++,p++) ; if (j) { if ((r = malloc(j+1)) == NULL) fatal("exparg", "duff malloc"); strncpy(r, q, j); r[j] = '\0'; myargv[myargc++] = r; } } } fclose(fp); } else myargv[myargc++] = argv[i]; if (myargc > 199) fatal("exparg", "too many args"); }  myargv[myargc] = NULL; return (mymain(myargc, myargv)); } return (mymain(argc, argv)); } int mymain(argc, argv) int argc; char **argv; { char *libname, *cmd, *p; int ret = 2; int fd, keepran, exist = 1; setbuf(stdout, NULL); if (argc < 3) usage(); p = cmd = *++argv; switch (*cmd) { case 'r': case 'u': exist = 0; case 'd': case 'm': case 'l': keepran = 0; break; case 't': case 'x': keepran = 1; break; default: fatal("Usage", "gstlib {dmrutx}[vsk][a|b modname] archive files.."); break; } while (*++p) { switch (*p) { case 'a': aftbef |= AFTER; break; case 'b': aftbef |= BEFORE; break; case 'v': verbose++; break; case 's': sortflag = TRUE; break; case 'k': keepflag = TRUE; break; case 'q': quitflag = TRUE; break; default: usage(); break; } } if (aftbef) aftmodname = *++argv; libname = *++argv; if ((fd = open(libname, O_RAW)) > 0) close(fd); else { if (exist) fatal(libname, "library does not exist"); else if (verbose) fprintf(stderr, "creating new library %s\n", libname); } if (fd > 0) readlib(&libhead, libname, keepran); if (aftbef) { if (*cmd != 'r' || *cmd != 'm' || *cmd != 'u') fatal("a or b modifiers only with r or m option", cmd); if ((beforemod = msearch(libhead, aftmodname)) == NULL) fatal(aftmodname, "not in library"); if (aftbef & AFTER) { beforemod = beforemod->next; } } else beforemod = NULL; switch (*cmd) { case 'd': ret = delete(libname, ++argv); break; case 'l': ret = replace(libname, ++argv, LOAD); break; case 'm': ret = move(libname, ++argv); break; case 'r': ret = replace(libname, ++argv, 0); break; case 't': ret = table(libname, ++argv); break; case 'u': ret = replace(libname, ++argv, UPDATE); break; case 'x': ret = extract(libname, ++argv); break; } myexit(ret); } myexit(ret) int ret; { if (ferror(stdout)) { fprintf(stderr, "stream error on \n"); ret |= 1; } if (quitflag) { fprintf(stderr, "press return to continue\n"); getchar(); } exit(ret); } /* print the table. * if (verbose == 0) just the modnames * if (verbose > 0) we do size and datestamp * if (verbose > 1) we do xdefs (and xrefs) * if (verbose > 3) we do a cross-reference of symbols too. */ int table(libname, namelist) char *libname, **namelist; { register LIST *l; register MODULE *m; LIST *xlisthead = NULL; LIST *tablehead = NULL; register char *name; int all = 1; name = NULL; if (*namelist) all = 0; while (all || (name = *namelist++)) { for (l = libhead; l != NULL; l = l->next) { m = l->p.module; if ((name != NULL) && (strcmp(name, m->name) != 0)) continue; addlist(&tablehead, (VOIDP)m); if (verbose) { printf("%-16.16s size:%5ld date:%s", m->name, m->size, myctime(&m->date)); } else printf("%s\n", m->name); if (verbose > 1) prtlist(m->xdef, " xdef:"); if (verbose > 2) prtlist(m->xref, " xref:"); if (all = 0) break; } all = 0; } if (verbose > 3) { mkxrefs(tablehead, &xlisthead); prtxrefs(xlisthead); } return 0; } /* replace the modules found in the file, (it may have multiple mods) * if update mode is set, we only replace out of date modules */ replace(libname, namelist, mode) char *libname, **namelist; int mode; { char *name; register LIST *l, *xl; LIST *onemod, *resolved = NULL, *unres = NULL; register MODULE *m; tand_t old, new; int count = 0, ret = 0; if (mode & LOAD) for (l = libhead; l; l = l->next) if (weload(&resolved, &unres, l->p.module)) ret |= 1; while (name = *namelist++) { onemod = NULL; readlib(&onemod, name, 0); for (l = onemod; l; l = l->next) { m = l->p.module; new = m->date; new = (new >> 16) | (new << 16); if (mode & LOAD) { if (weneed(unres, m) == 0) continue; if (weload(&resolved, &unres, m)) ret |= 1; } if (xl = msearch(libhead, m->name)) { old = xl->p.module->date; old = (old >> 16) | (old << 16); if (!(mode & UPDATE) || old < new) { xl->p.module = l->p.module; if (verbose) printf("r %s\n", m->name); count++; } } else { inslist(&libhead, (VOIDP)l->p.module, beforemod); if (verbose) printf("a %s\n", m->name); count++; } } } if (verbose > 1 && (mode & LOAD)) prtlist(unres, "unresolved:"); if (ret) return ret; if ((mode & UPDATE) && (count == 0)) return 0; return (copyback(libhead, libname)); } move(libname, namelist) char *libname, **namelist; { char *name; LIST *l; MODULE *m; while (name = *namelist++) { if ((l = msearch(libhead, name)) == NULL) { printf("move: %s is not in library", name); } else { m = l->p.module; dellist(&libhead, l); inslist(&libhead, (VOIDP)m, beforemod); if (verbose) printf("m %s\n", m->name); } } return (copyback(libhead, libname)); } delete(libname, namelist) char *libname, **namelist; { char *name; LIST *l; int ret = 0; if (*namelist == NULL) return -1; while (name = *namelist++) { if (l = msearch(libhead, name)) { dellist(&libhead, l); if (verbose) printf("d %s\n", name); } else { printf("delete: %s not in archive\n", name); ret |= 1; } } if (ret) return(ret); return (copyback(libhead, libname)); } extract(libname, namelist) char *libname, **namelist; { char *name; char tmpname[80]; LIST *l, *xl, onemod; MODULE *m; int dummy = 0; int ret = 0; if (*namelist == NULL) xl = libhead; else xl = NULL; for (;;) { if (xl == NULL) name = *namelist++; else { m = xl->p.module; xl = xl->next; name = m->name; } if (name == NULL) break; if (l = msearch(libhead, name)) { m = l->p.module; strcpy(tmpname, m->name); if (*tmpname == '\0') sprintf(tmpname, "dummy%03d.bin", ++dummy); if (verbose) printf("x %s\n", tmpname); onemod.p.module = l->p.module; onemod.next = NULL; writemod(&onemod, tmpname, keepflag); } else { printf("extract: %s not in %s\n", name, libname); ret |= 1; } } return ret; } /* read a file into memory, and append details to listp * if a single module with no ranlib we use the file datestamp else jan 1 1970 * if the first module is "ranlib" then we re-adjust date fields from there * and eliminate "ranlib" from our enquiries. */ int readlib(listp, name, keepran) LIST **listp; char *name; int keepran; { DMABUFFER filestat; long count; int chunk; tand_t t; unsigned char *mp, *p, *endp; MODULE *m, *ranmod = NULL; LIST *l; int fd; if (mystat(name, &filestat) < 0) faterr("cannot mystat", name); if ((mp = lmalloc(filestat.d_fsize)) == NULL) fatal("readlib", "lmalloc"); if ((fd = open(name, O_RAW)) < 0) faterr("cant open", name); for (p = mp, count = filestat.d_fsize; count > 0L; p += chunk) { chunk = (count > 4096L) ? 4096 : count; if (read(fd, p, chunk) != chunk) faterr("read error", name); count -= chunk; } close(fd); for (count = 0L, p = mp, endp = mp + filestat.d_fsize; p < endp; ) { if ((m = gstread(p, endp)) == NULL) fatal("duff module", name); m->date = JAN011980; addlist(listp, (VOIDP)m); count += m->size; p += m->size; } if (l = msearch(*listp, "ranlib.bin")) { ranmod = l->p.module; if (l != *listp) fatal("ranlib.bin", "is not at beginning"); if (keepran == 0) dellist(listp, l); for (l = *listp; l; l = l->next) { m = l->p.module; t = rdranlib(ranmod, m->name); m->date = t; D(printf("module:%s %s", m->name, myctime(&m->date));) } } else if ((l = *listp) && (l->next == NULL)) l->p.module->date = filestat.d_tandd; return 0; } /* given a memory address, we read the memory to analyse the module. * if ok, we return the details in a freshly malloced MODULE structure * else we return NULL */ MODULE *gstread(mp, endp) unsigned char *mp; register unsigned char *endp; { register unsigned char *p; register MODULE *m; register int len, byte; register short section; char *newname; if ((m = MALLOC(MODULE)) == NULL) fatal("gstread", "malloc"); m->name = ""; m->buf = mp; m->size = m->date = 0L; m->xdef = m->xref = NULL; p = mp; if (*p != 0xfb || *(p+1) != 0x01) return NULL; p += 2; len = *p++; newname = unwierd(p, len); m->name = newstring(newname, strlen(newname)); p += len; while (p < endp) { if (*p++ != 0xfb) continue; switch (byte = *p++) { case 0xfb: break; case 0x01: m->size = (long)(p - mp -2); return m; case 0x02: len = *p++; p += len; break; case 0x03: p += 4; break; case 0x04: p += 2; break; case 0x05: p += 4; break; case 0x06: /* XDEF */ len = *p++; addlist(&m->xdef, (VOIDP)newstring(p, len)); p += len; p += 4; /* .kbv was missing */ section = (*p << 8) + *(p+1); p += 2; break; case 0x07: p += 5; while (*p++ != 0xfb) p += 2; break; case 0x10: /* XREF */ section = (*p << 8) + *(p+1); p += 2; len = *p++; if (section >= 0) addlist(&m->xref, (VOIDP)newstring(p, len)); p += len; break; case 0x12: p += 2; break; case 0x13: m->size = (long)(p - mp); return m; default: printf("escape 0xfb%02x in %s\n", byte, m->name); fatal("gstread", "unknown object type"); break; } } fatal("gstread", "unexpected EOF"); } /* insert an item before list entry and update head if empty * if posn is NULL, then we are adding to the end of list * if posn is not in the list, we've had it */ void inslist(head, str, posn) LIST **head; VOIDP str; register LIST *posn; { register LIST *l, *new; if ((new = MALLOC(LIST)) == NULL) fatal("inslist", "malloc"); new->next = posn; new->p.name = str; for (l = *head; l; l = l->next) { if (l->next == posn) { l->next = new; return; } } *head = new; return; } /* delete entry from list */ void dellist(head, lentry) LIST **head; LIST *lentry; { register LIST *l; if (lentry == *head) *head = lentry->next; else { for (l = *head; l->next; l = l->next) { if (l->next == lentry) { l->next = lentry->next; break; } } } free(lentry); } int weneed(reflist, newmod) register LIST *reflist; register MODULE *newmod; { register LIST *l; if (reflist == NULL) return 0; for (l = newmod->xdef; l; l = l->next) if (nsearch(reflist, l->p.name)) return 1; return 0; } /* merge the new module's symbols into our lists * if multiple xdefs then shout */ int weload(pdeflist, preflist, newmod) MODULE *newmod; LIST **pdeflist, **preflist; { register LIST *l, *xl; register char *name; int ret = 0; for (l = newmod->xdef; l; l = l->next) { name = l->p.name; if (xl = nsearch(*preflist, name)) dellist(preflist, xl); if (nsearch(*pdeflist, name)) { ret |= 1; printf("%s is multiply defined in %s\n", name, newmod->name); } else addlist(pdeflist, name); } for (l = newmod->xref; l; l = l->next) { name = l->p.name; if (nsearch(*pdeflist, name)) continue; if (nsearch(*preflist, name) == NULL) addlist(preflist, name); } return ret; } /* build an xref list from the module list */ void mkxrefs(list, xlist) LIST *list; LIST **xlist; { LIST *modlist; register LIST *l; register MODULE *m; register CREF *xr; char *symbol, *modname; for (modlist = list; modlist; modlist = modlist->next) { m = modlist->p.module; modname = m->name; for (l = m->xdef; l; l = l->next) { symbol = l->p.name; xr = addxsym(xlist, symbol); addlist(&xr->xdef, (VOIDP)modname); } for (l = m->xref; l; l = l->next) { symbol = l->p.name; xr = addxsym(xlist, symbol); addlist(&xr->xref, (VOIDP)modname); } } } /* display the xref list */ void prtxrefs(xlist) LIST *xlist; { register LIST *l, *xl; register CREF *xr; for (l = xlist; l; l = l->next) { xr = l->p.cref; printf("symbol:%s", xr->name); if (xl = xr->xdef) { printf("\txdef:"); for ( ; xl; xl = xl->next) printf(" %s", xl->p.name); } printf("\n"); prtlist(xr->xref, " xref:"); } } void prtlist(list, title) register LIST *list; char *title; { register LIST *l; char buf[256]; l = list; while (l) { strcpy(buf, title); for (; l; l = l->next) { strcat(buf, " "); strcat(buf, l->p.name); if (strlen(buf) > 60) break; } printf("%s\n", buf); } } /* we go thru the whole list of xdef'd symbols. * if it is possible to find any module that contains xref to symbol * we move the xdef MODULE info in the main list to after the xref MODULE * we give up if we make moves but list in unchanged. * we give up if we have 50 attempts to sort list. */ int sortxrefs(list, xlist) LIST **list; LIST *xlist; { register LIST *l, *xl; LIST *xrefl, *refpsn, *defpsn, *copyhead; MODULE *m; register CREF *xr; register int exchanges, changed, attempts; char *modname; copyhead = NULL; for (l = *list; l; l = l->next) addlist(©head, (VOIDP)l); for (attempts = 0; attempts < 50; attempts++) { exchanges = 0; for (l = *list, xl = copyhead; l; l = l->next, xl = xl->next) xl->p.module = l->p.module; for (l = xlist; l; l = l->next) { xr = l->p.cref; for (xl = xr->xdef; xl; xl = xl->next) { defpsn = msearch(*list, xl->p.name); modname = xl->p.name; for (xrefl = xr->xref; xrefl; xrefl = xrefl->next) { if (refpsn = msearch(defpsn, xrefl->p.name)) { D(printf("moving %s after %s\n", modname, xrefl->p.name);) m = defpsn->p.module; dellist(list, defpsn); inslist(list, (VOIDP)m, refpsn->next); defpsn = refpsn->next; exchanges++; } } } } if (verbose > 3)  printf("attempt :%d moves done :%d\n", attempts, exchanges); if (exchanges == 0) return 0; for (l = *list, xl = copyhead, changed = 0; l; l = l->next, xl = xl->next) { if (xl->p.module != l->p.module) { changed = 1; break; } } if (changed == 0) return 1; } return 1; } tand_t rdranlib(ranmod, name) MODULE *ranmod; char *name; { register MODULE *m; register unsigned char *p; tm_t t; int byte, len; char buf[128]; sprintf(buf,"module:%-16.16s", name); m = ranmod; p = m->buf; if (*p != 0xfb || *(p+1) != 0x01) return JAN011980; p += 2; len = *p++; if (strncmp(p, "ranlib.bin", len)) return JAN011980; p += len; for (;;) { if (*p++ != 0xfb) return 0L; switch (byte = *p++) { case 0x01: return JAN011980; case 0x02: len = *p++; if (strncmp(p, buf, strlen(buf)) == 0) { strncpy(buf, p, len); p = buf + 32; t.tm_mon = atoi(p) - 1; p += 3; t.tm_mday = atoi(p); p += 3; t.tm_year = atoi(p) - 1900; p += 5; t.tm_hour = atoi(p); p += 3; t.tm_min = atoi(p); p += 3; t.tm_sec = atoi(p); return (tm_to_tand(&t)); } p += len; break; case 0x13: return JAN011980; default: fatal("rdranlib", "unknown object type"); break; } } } MODULE *mkranlib(list, name) LIST *list; char *name; { register LIST *xl; register unsigned char *p; register MODULE *m; register int pass; MODULE *ranmod; LIST *l, onemod; tm_t *tp; char buf[1000], *mp = NULL; if ((ranmod = m = MALLOC(MODULE)) == NULL) fatal("mkranlib", "MALLOC"); m->name = name; m->size = 0L; m->buf = NULL; mytime(&m->date); m->xref = m->xdef = NULL; onemod.p.module = m; onemod.next = list;  for (pass = 0; pass < 2; pass++) { p = mp; sprintf(buf, "%s", name); D(printf("mkranlib: %s\n", buf);) p += mkcode(0x01, p, buf, pass); for (l = &onemod; l; l = l->next) { m = l->p.module; tp = tand_to_tm(m->date); sprintf(buf, "module:%-16.16s %8ld %02d %02d %04d %02d %02d %02d ", m->name, m->size, tp->tm_mon+1, tp->tm_mday, tp->tm_year+1900, tp->tm_hour, tp->tm_min, tp->tm_sec); D(printf("%s\n", buf);) p += mkcode(0x02, p, buf, pass); if (xl = m->xdef) { more: strcpy(buf, "xdef:"); for (; xl; xl = xl->next) { strcat(buf, " "); strcat(buf, xl->p.name); if (strlen(buf) > 60) break; } D(printf("%s\n", buf);) p += mkcode(0x02, p, buf, pass); if (xl) goto more; } } p += mkcode(0x13, p, NULL, pass); m = ranmod; m->size = (long)(p - mp); if (pass == 0) if ((p = mp = m->buf = malloc((unsigned)m->size)) == NULL) fatal("mkranlib", "malloc"); } D(printf("ranlib size: %ld\n", m->size);) return m; } int mkcode(code, mp, buf, doflag) register char *mp, *buf; register int code, doflag; { register char *p; register int len; p = mp; if (doflag) { *p++ = 0xfb; *p++ = code; } else p += 2; if (buf != NULL) { len = strlen(buf); if (doflag) { *p++ = len; strncpy(p, buf, len); } else p++; p += len; } return (p - mp); } /* lookup a module name in LIST of modules */ LIST *msearch(list, name) LIST *list; char *name; { register LIST *l; register MODULE *m; for (l = list; l ; l = l->next) { m = l->p.module; if (m && (strcmp(m->name, name) == 0)) return l; } return NULL; } /* lookup a name in LIST of names */ LIST *nsearch(list, name) LIST *list; register char *name; { register LIST *l; for (l = list; l ; l = l->next) { if ((strcmp(l->p.name, name) == 0)) return l; } return NULL; } /* insert symbol into sorted list of xref symbols * create a new node if reqd. return ptr to CREF */ CREF *addxsym(xlist, name) LIST **xlist; char *name; { register LIST *l; register CREF *xr; register int cmp; for (l = *xlist; l ; l = l->next) { xr = l->p.cref; cmp = strcmp(name, xr->name); if (cmp == 0) return xr; if (cmp < 0) break; } if ((xr = MALLOC(CREF)) == NULL) fatal("addxsym", "MALLOC"); xr->name = name; xr->xref = xr->xdef = NULL; inslist(xlist, (VOIDP)xr, l); return xr; } /* copy archive back to tmp file inserting "ranlib" module */ int copyback(liblist, libname) LIST *liblist; char *libname; { int ret = 0; LIST *xlist, *list; char tempname[200], *p; strcpy(tempname, libname); if (p = strrchr(tempname, '\\')) p++; else p = tempname; strcpy(p, "libname.tmp"); list = liblist; xlist = NULL; if (sortflag) { mkxrefs(list, &xlist); if (ret = sortxrefs(&list, xlist)) fprintf(stderr, "unable to sort library %s\n", libname); } if (msearch(list, "ranlib.bin") == NULL) inslist(&list, (VOIDP)mkranlib(list, "ranlib.bin"), list); ret |= writemod(list, tempname, 0); if (ret == 0) { unlink(libname); if (rename(tempname, libname) != 0) faterr("rename", libname); } return ret; } /* write a list of modules to name */ int writemod(list, name, touch) LIST *list; char *name; int touch; { register LIST *l; register MODULE *m; register int fd, chunk, ret; register long count; register unsigned char *p; if ((fd = creat(name, O_RAW)) < 0) faterr("cant creat", name); for (l = list; l != NULL; l = l->next) { m = l->p.module; for (count = m->size, p = m->buf; count > 0L; ) { chunk = (count > 4096L) ? 4096 : count; if (write(fd, p, chunk) != chunk) faterr("write error", name); count -= chunk; p += chunk; } } ret = close(fd); if (touch) keepdate(name, m->date); return ret; } char *newstring(mp, len) register char *mp; int len; { register char *dst, *str; if ((str = dst = malloc(len + 1)) == NULL) fatal("newstring", "malloc"); while (len--) *dst++ = *mp++; *dst = '\0'; D(printf("%s\n", str);) return str; } /* make a normal lowercase filename * with a .bin extension if none already */ char *unwierd(name, len) char *name; int len; { register char *p, *dst; static char wierdbuf[200]; for (p = name, dst = wierdbuf, *dst = '\0'; len > 0; len--, p++) { if (*p == ' ') break; *dst++ = (*p >= 'A' && *p <= 'Z') ? *p + ('a' - 'A') : *p; } *dst++ = '\0'; *dst++ = '\0'; if (strchr(wierdbuf+1, '.') == NULL) strcat(wierdbuf, ".bin"); return wierdbuf; } char *strlower(s) char *s; { register char *p; for (p = s; *p; p++) *p = (*p >= 'A' && *p <= 'Z') ? *p + ('a' - 'A') : *p; return s; } char *cleannm(name) char *name; { register char *p; if (p = strrchr(name, '\\')) return p+1; if (p = strrchr(name, ':')) return p+1; return name; } void faterr(s, t) char *s, *t; { fprintf(stderr, "gstlib: Fatal error: %s %s\n", s, t); perror("Tos error"); myexit(1); } void fatal(s, t) char *s, *t; { fprintf(stderr, "gstlib: Fatal error: %s %s\n", s, t); myexit(1); } #ifndef LATTICE rename(old, new) char *new, *old; { int ret; ret = Frename(0, old, new); if (ret < 0) errno = -ret; return ret; } #endif keepdate(name, date) char *name; tand_t date; { int fd; if ((fd = Fopen(name, 0)) > 0) { Fdatime(&date, fd, 1); Fclose(fd); } else { errno = -fd; perror(name); } return fd; } int mystat(fullname, statptr) char *fullname; DMABUFFER *statptr; { DMABUFFER *saved; char *name; int ret = 0; name = cleannm(fullname); saved = (DMABUFFER *)Fgetdta(); Fsetdta(statptr); ret = Fsfirst(fullname, 0); if (ret < 0) { errno = -ret; ret = -1; } /* else if (strcmp(name, statptr->d_fname) != 0) ret = -1; */ Fsetdta(saved); return ret; } tm_t *tand_to_tm(tandd) register tand_t tandd; { static tm_t tm; static int monbeg[2][12] = { { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }, { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 306, 335 } }; register unsigned time; register unsigned date; int leap; time = tandd >> 16; date = tandd & 0xfL; tm.tm_sec = (time & 0x1f)<< 1; /* Seconds (0-59) */ tm.tm_min = (time >> 5) & 0x3f; /* Minutes (0-59) */ tm.tm_hour = (time >> 11) & 0x1f; /* Hours (0-23); 0 = midnight */ tm.tm_mday = ((date) & 0x1f); /* Day of month (1..28,29,30,31) */ tm.tm_mon = ((date >> 5) & 0x0f) - 1; /* Month (0-11); 0 = January */ tm.tm_year = ((date >> 9) & 0x3f)+80; /* Year AD since 1900 */ leap = ((tm.tm_year %4) == 0); tm.tm_yday = monbeg[leap][tm.tm_mon] + tm.tm_mday - 1; tm.tm_wday = (3 + tm.tm_year + (tm.tm_year << 2) + tm.tm_yday) % 7; return &tm; } tand_t tm_to_tand(tp) register tm_t *tp; { register tand_t tandd = 0L; tandd <<= 5; tandd |= (tp->tm_hour); tandd <<= 6; tandd |= (tp->tm_min); tandd <<= 5; tandd |= (tp->tm_sec >> 1); tandd <<= 7; tandd |= (tp->tm_year - 80); tandd <<= 4; tandd |= (tp->tm_mon + 1); tandd <<= 5; tandd |= (tp->tm_mday); return tandd; } void mytime(tandp) tand_t *tandp; { *tandp = Tgettime(); *tandp = (*tandp << 16) | (Tgetdate() & 0xfL); } char *myctime(tandp) tand_t *tandp; { static char ctimbuf[30]; static char *monnm[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; static char *daynm[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; tm_t *tp; tp = tand_to_tm(*tandp); sprintf(ctimbuf, "%s %s %2d %02d:%02d:%02d %04d GMT\n", daynm[tp->tm_wday], monnm[tp->tm_mon], tp->tm_mday, tp->tm_hour, tp->tm_min, tp->tm_sec, tp->tm_year+1900); return ctimbuf; } h` Hzd?< NA\B?< NA\`B ByF y.PN z *(# 0(33H4 9#F"`#B":0(H#3 x.@g8 bf."H@g!U<UfNa2` 86kCe a9Lf x.4(|l:AJ?<NATAKHz?<NA\>9SGkl"y?/ KNI^)<:g K:`:p\fRIBW/ a*_JGf?</ ?<NNAPJf(a"_>CQ x.1|B?< NA\BgNA/ ?< NA\Hz?< NA\`~?/ ?<NNAPJm2:@<.g:-߸fA p6QRGg ?<ONAT`Nu Lf*HS$Ig"<\fBH*LaL<\K`B&yFx:<av?/SGk/ &z S@ LIQ$<\fR"LA,+fM/?< NA\Hz1?< NA\Bg/?<=NAP:/9B/??<?NAO ??<>NAX?JBg/?<NAX?JBg/?<=NAP2:?<?Hk?<WNAO ??<>NAXG,Q*(_,_>NuHz4?< NA\O?<NATO`"NVTaHICaaGTxza4ATJGg$/ /Af?Ka> _*_A,SGfN^Nu?[J/ ?<9NA\0NuHz?< NA\`p  pRamdisk Full!q Press any key pFile not found!q Not enough RAM \*.*PN (:*&@(@ 86!.!6ab0<C L0QpAC0Qz | `Reset Proof Ramdisc 1.7 HiSoft 1988-90 09S@HR@3 ?56T2R83$R3҂y3A3"KSp"QA "KrQNuHiSoftBBBp* bAv vAb!vAR ~A>!~A* rA!r 8:!Nu:/gNA Nu:/gNpNu:/gN"o0/ S@r2/ ҁAMP! A/gH/ fNr""""""""""""""""" Xp6   T  r"&  =/./</<N?<"<*y@ -N+"0?N?<*y@?-N#@N^NuNVrp??=@0.R@?N-@ n@t@Bf B.`* n#include /* get the AES prototypes and definitions */ #include /* get the VDI prototypes and definitions */ /* v_opnvwk input array */ short work_in[11]={1,1,1,1,1,1,1,1,1,1,2}; /* v_opnvwk output array */ short work_out[57]; int main(void) { short handle; /* virtual workstation handle */ short junk; /* unused variable */ appl_init(); /* start AES */ handle=graf_handle(&junk,&junk,&junk,&junk); /* find AES handle */ v_opnvwk(work_in,handle,work_out); /* open workstation */ v_clrwk(handle); /* clear workstation */ vsf_interior(handle;FIS_USER); /* select fill type user-defined */ /* draw a circle on screen */ v_circle(handle,work_out[0]/2,work_out[1]/2,work_out[1]/2); v_clsvwk(handle); /* close workstation */ evnt_keybd(); return appl_exit(); /* shutdown AES */ } <WNAO ??<>NAXG,Q2(_,_>NuNVTaHIC=aGTxzaVATJGg$/ /Af?Ka> _*_A,SGfN^Nu?"/ ?<9NA\0NuHz?< NA\`p /* * The Towers of Hanoi program in Lattice C * * lc -csf -v -w -rr -O -Lavg hanoi.c * * Copyright (c) 1990 HiSoft */ #include #include #include #include #include #define max_rings 25 #define left 0 #define middle 1 #define right 2 #define space 50 #define gap 10 /* v_opnvwk input array */ short work_in[11]={1,1,1,1,1,1,1,1,1,1,2}; /* v_opnvwk output array */ short work_out[57]; short handle; /* virtual workstation handle */ unsigned int ring_height,full_height,max_width,pole[3]; short highest[3]; unsigned int (*poles)[3]; void draw_ring(unsigned int which_pole,unsigned int size,enum {DRAW=2,ERASE=0} type,unsigned int start) { unsigned int xstart,ystart; short xy[4]; vsf_interior(handle,(int)type); xstart=pole[which_pole]-size/2; ystart=full_height-space-start*ring_height; xy[0]=xstart; xy[1]=ystart; xy[2]=xstart+size; xy[3]=ystart+ring_height-2; if (type==ERASE) vr_recfl(handle,xy); /* * wtest.c - the WERCS test program for Lattice C 5 * * 28/1/90 - Extended to do a PROGDEF AGK * * Compile using: * * lc -w -csfm -v -O -rr -Lavg wtest * * For minimal linking: * * clink with wtest.lnk define @_main=@main define @exit=@_XCEXIT * * Copyright (c) 1990 HiSoft */ #include #include #include #include #include #include "wrsc.h" /* global variables */ OBJECT *menu_ptr; short screenx,screeny,screenw,screenh; int radio; int deskflag,finished=0; int checked; char edit[20]; int handle; int __stdargs __saveds round_button(PARMBLK *pb) { OBJECT *tree; int slct, flip; short pxy[4]; tree = pb->pb_tree; slct = SELECTED & pb->pb_currstate; flip = SELECTED & (pb->pb_currstate ^ pb->pb_prevstate); pxy[0]=pb->pb_xc; pxy[1]=pb->pb_yc; pxy[2]=pb->pb_xc+pb->pb_wc-1; pxy[3]=pb->pb_yc+pb->pb_hc-1; vs_clip(handle,1,pxy); pxy[0]=pb->pb_x-2; pxy[1]=pb->pb_y-2; pxy[2]=pb->pb_x+pb->pb_w-1+4; pxy[3]=pb->pb_y+pb->pb_h-1+4; if (flip) { pxy[0]-=1; pxy[1]-=1; pxy[2]+=1; pxy[3]+=1; } vsf_color(handle, WHITE); vsf_style(handle, FIS_SOLID); vsf_interior(handle, SOLID); vsf_perimeter(handle, 1); v_rfbox(handle, pxy); if (!flip) { short junk; pxy[0]-=1; pxy[1]-=1; pxy[2]+=1; pxy[3]+=1; vsl_color(handle, BLACK); vsl_type(handle,SOLID); v_rbox(handle, pxy); vst_alignment(handle,1,5,&junk,&junk); vst_color(handle,BLACK); v_gtext(handle,pb->pb_x+pb->pb_w/2,pb->pb_y,(char *)pb->pb_parm); vst_alignment(handle,0,0,&junk,&junk); if (tree[pb->pb_obj].ob_flags & DEFAULT) { pxy[0]-=4; pxy[1]-=4; pxy[2]+=4; pxy[3]+=4; vsl_width(handle,3); v_rbox(handle, pxy); vsl_width(handle,1); } } vsl_color(handle, BLACK); return 0; } void obj_init(void) { OBJECT *tree; static APPLBLK obj[2]; short junk; rsrc_gaddr(R_TREE,TestDialog,&tree); obj[0].ab_parm=(long)tree[DOK].ob_spec; tree[DOK].ob_spec=obj; obj[1].ab_parm=(long)tree[DCancel].ob_spec; tree[DCancel].ob_spec=obj+1; obj[0].ab_code = obj[1].ab_code = round_button; tree[DOK].ob_type=tree[DCancel].ob_type=G_PROGDEF; handle=graf_handle(&junk,&junk,&junk,&junk); } void initialise(void) { if (appl_init()) exit(EXIT_FAILURE); if (!rsrc_load("WRSC.RSC")) { form_alert(1,"[1][Resource file error][ Quit ]"); exit(EXIT_FAILURE); } deskflag=0; rsrc_gaddr(R_TREE,Menu1,&menu_ptr); menu_bar(menu_ptr,1); obj_init(); wind_get(DESK,WF_WORKXYWH,&screenx,&screeny,&screenw,&screenh); graf_mouse(ARROW,NULL); *edit=0; radio=DRadio1; } void setdesk(OBJECT *newdesk) { wind_newdesk(newdesk,ROOT); /* force the AES to redraw the whole screen */ form_dial(FMD_FINISH,0,0,0,0,screenx,screeny,screenw,screenh); } void deinitialise(void) { if (deskflag) { setdesk(NULL); deskflag=0; } menu_bar(menu_ptr,0); rsrc_free(); appl_exit(); } int handle_dialog(OBJECT *dlog,int editnum) { short x,y,w,h; int but; form_center(dlog,&x,&y,&w,&h); form_dial(FMD_START,0,0,0,0,x,y,w,h); form_dial(FMD_GROW,x+w/2,y+h/2,0,0,x,y,w,h); objc_draw(dlog,0,10,x,y,w,h); but=form_do(dlog,editnum); form_dial(FMD_SHRINK,x+w/2,y+h/2,0,0,x,y,w,h); form_dial(FMD_FINISH,0,0,0,0,x,y,w,h); dlog[but].ob_state&=~SELECTED; /* de-select exit button */ return but; } /* * copy a string into a TEDINFO structure. */ void set_tedinfo(OBJECT *tree,int obj,char *source) { char *dest; dest=((TEDINFO *)tree[obj].ob_spec)->te_ptext; strcpy(dest,source); } /* * copy the string from a TEDINFO into another string */ void get_tedinfo(OBJECT *tree, int obj, char *dest) { char *source; source=((TEDINFO *)tree[obj].ob_spec)->te_ptext; /* extract address */ strcpy(dest,source); } void set_button(OBJECT *tree,int parent,int button) { int b; for (b=tree[parent].ob_head; b!=parent; b=tree[b].ob_next) if (b==button) tree[b].ob_state|=SELECTED; else tree[b].ob_state&=~SELECTED; } int get_button(OBJECT *tree,int parent) { int b; b=tree[parent].ob_head; for (; b!=parent && !(tree[b].ob_state&SELECTED); b=tree[b].ob_next) ; return b; } void test_dialog(void) { OBJECT *dlog; int result; rsrc_gaddr(R_TREE,TestDialog,&dlog); set_tedinfo(dlog,DEditable,edit); set_button(dlog,DParent,radio); result=handle_dialog(dlog,DEditable); if (result==DOK) { get_tedinfo(dlog,DEditable,edit); radio=get_button(dlog,DParent); } } void handle_menu(int title,int item) { char *aboutstr; switch (item) { case MAbout: rsrc_gaddr(R_STRING,AAlert,&aboutstr); form_alert(1,aboutstr); break; case MQuit: finished=1; break; case MCheckme: checked^=1; menu_icheck(menu_ptr,MCheckme,checked); break; case MDialog: test_dialog(); break; case MInstall: if (deskflag) { deskflag=0; setdesk(NULL); } else { OBJECT *temp; deskflag=1; rsrc_gaddr(R_TREE,NewDesktop,&temp); temp[0].ob_x=screenx; temp[0].ob_y=screeny; temp[0].ob_width=screenw; temp[0].ob_height=screenh; setdesk(temp); } break; } menu_tnormal(menu_ptr,title,1); } void handle_events(void) { short mbuff[8]; for (; !finished;) { evnt_mesag(mbuff); if (mbuff[0]==MN_SELECTED) { wind_update(BEG_UPDATE); handle_menu(mbuff[3],mbuff[4]); wind_update(END_UPDATE); } } } int main(void) { initialise(); handle_events(); deinitialise(); return EXIT_SUCCESS; } Jkf + n0` n0&_N^ _ NNV/ GF?./.?. NJkf + n0` n0&_N^ _ NN)lN)lN)lNV/ GF?<?./<N-@?<?./<N'@Jl +D7@p`"`?<?./.N-@ +`&_N^ _TNGFr-p??7@2+AH A'02R@QNu@:*.*HNu>p02@0Nu0/lD@?@ _TN _0@NS@gVf JAgmJ`JNuNu _ am znNH@B@H@NuR.  a.. WTEST C }<PROG2 C Da else v_bar(handle,xy); } void realmove(unsigned int source, unsigned int destination) { unsigned int ring_width; ring_width=poles[highest[source]-1][source]; /* erase source ring */ draw_ring(source,ring_width,ERASE,highest[source]); poles[highest[source]-1][source]=0; highest[source]--; /* draw destination ring */ highest[destination]++; poles[highest[destination]-1][destination]=ring_width; vsf_style(handle,highest[destination]); draw_ring(destination,ring_width,DRAW,highest[destination]); } void move(unsigned int howmany, unsigned int source, unsigned int work, unsigned int destination) { if (howmany<=1) realmove(source,destination); else { move(howmany-1,source,destination,work); realmove(source,destination); move(howmany-1,work,source,destination); } } int main(void) { short junk; /* unused variable */ unsigned int i,num_rings; clock_t tm; appl_init(); /* start AES */ handle=graf_handle(&junk,&junk,&junk,&junk); /* find AEIMPLEMENTATION MODULE WRSC; BEGIN END WRSC. ##?<NNO&y yN##?<NNO&y yN##?<NNO&y yN##?<NNO&y yN##?<NNO&y yN##?<NNO&y yN##?<NNO&y yN##?<NNO&y yN##?<NNO&y yN##?<NNO&y yN##?<NNO&y yN##?<NNO&y yN##?<NNO &y yN##?< NNO&y yN##?<!NNO&y yN##?<"NNO&y yN##?<#NNO&y yN##?<$NNO&y yN##?<%NNO&y yNRy@|Hy5*/< /<N6N5~pAN)NuNV/ G n  f` .^// int main(void) { extern int _XMODE; short msg[8]; switch(_XMODE) { case 0: appl_init(); form_alert(1,"[1][I am a GEM Program][OK]"); appl_exit(); break; case 1: puts("I'm a TOS proggy"); getch(); break; case 2: menu_register(appl_init()," My DA Entry"); for (;;) { evnt_mesag(msg); if (msg[0]==AC_OPEN) form_alert(1,"[1][I am a Desk Accessory][OK]"); } break; case 3: puts("I'm an auto folder proggy"); getch(); break; } return 0; } ` n("n,6HCBCHC$@z;Ef n,RP n6.SCHCBCHC$@x\Dg nt4."\`SnBnRn0.$.2AbX n|<.*Cp@g80.". Ad* nt4.""nz:.(need move.l d1,d0 noteneed add.l d0,d0 add.l d0,d0 * clr.l -4(a1) add.l d0,a1 rts ENDC IFD NOBASER CSECT udata,2 ELSE CSECT __MERGED,2 ENDC IFD GST __LinkerDB ENDC IFND DA _environ ds.l 1 __onbrk ds.l 1 ENDC __pbase ds.l 1 __savePC ds.l 1 __saveD2A2 ds.l 2 __base ds.l 1 __clkstart ds.l 1 __msiz ds.l 1 __mblk ds.l 1 IFD AUTO __XMODE IFD SHORTINT ds.w 1 ELSE ds.l 1 ENDC ENDC IFD SHORTINT __maxblk ds.w 1 _errno ds.w 1 IFND DA __EN |VC ds.w 1 ENDC ELSE __maxblk ds.l 1 _errno ds.l 1 IFND DA __ENVC ds.l 1 ENDC ENDC __OSERR __oserr ds.l 1 __tos ds.w 1 __country ds.l 1 IFD DA base ds.b 256 Desk Accessory stack size stack ENDC END A`/ GND&_Nu /Nf g-kv y@,'P` y@,-PvN.~@rAf& g-kv'|`p`*Bn|r2.|$&.b4 n p0.|,Dp0.|"@)~@fRn|`r2.|$&.b" n p0.|,Dp@fp0.|$@*~@48(unsigned short *); void srand48(long); double tanh(double); extern int _FPERR; #ifndef max #define max(a,b) ((a) > (b) ? (a) : (b)) #endif #ifndef min #define min(a,b) ((a) <= (b) ? (a) : (b)) #endif #endif @H@N _ H@B@H@NA=#@ <+"<N+N$N69SGkl"y?/ KNI^)<:g K:`:p\fRIBW/ a*_JGf?</ ?<NNAPJf(a"_>CQ x.1|B?< NA\BgNA/ ?< NA\Hz?< NA\`~?/ ?<NNAPJm2:@<.g:-߸fA p6QRGg ?<ONAT`Nu Lf*HS$Ig"<\fBH*LaL<\K`B&yFx:<av?/SGk/ &z S@ LIQ$<\fR"LA,+fM/?< NA\Hz1?< NA\Bg/?<=NAP:/9B/??<?NAO ??<>NAX?JBg/?<NAX?JBg/?<=NAP2:?<?Hk?<WNAO ??<>NAXG,Q*(_,_>NuHz4?< NA\O?<NATO`"NVTaHICaaGTxza4ATJGg$/ /Af?Ka> _*_A,SGfN^Nu?HHH$H H  Lm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_Xm:12345678.123_XMDrive: _:a0500Disk Size: _K91234Dir Entries: _9LOAD012345678901234567890123456789Save as: _PSAVEClear FilesCopied Files/Directories:EXITHiSoft Reset Proof Ramdisk 1.5$3BQ`o~#2AP_n}"1@O^m|!0?N]l{ 9(9   4 P L  l      0 L h ' $$ ,'X ]& i+1 $ HJ/ ?<9NA\0NuHz?< NA\`p  pRamdisk Full!q Press any key pFile not found!q Not enough RAM \*.*PN (:*&@(@ 86!.!6ab0<C L0QpAC0Qz | `Reset Proof Ramdisc 1.7 HiSoft 1988-90 09S@HR@3 ?56T2R83$R3҂y3A3"KSp"QA "KrQNuHiSoftBBBp* bAv vAb!vAR ~A>!~A* rA!r 8:!Nu:/gNA Nu:/gNpNu:/gN"o0/ S@r2/ ҁAMP! A/gH/ fNr""""""""""""""""" xph lib bin\clink.ttpbin\lc1.lctp6   T  r"&  TJGg$/ /Af?Ka> _*_A,SGfN^Nu?"/ ?<9NA\0NuHz?< NA\`p S handle */ v_opnvwk(work_in,&handle,work_out); /* open workstation */ max_width=(work_out[0]-gap*4)/3; full_height=work_out[1]; for (i=0; i<3; i++) pole[i]=(max_width+gap)*i+max_width/2+gap; do { printf("Number of rings to move: "); scanf("%d",&num_rings); } while (num_rings<=1 || num_rings>max_rings); poles=malloc(max_rings*sizeof(*poles)); ring_height=(full_height-2*space)/max_rings; graf_mouse(M_OFF,NULL); v_clrwk(handle); vsf_color(handle,BLACK); /* initialise first pole */ for (i=0; i@? ??'?O???O?'??  |>@<<O'  @OO''  ? ? |>@|>@<<?9`@e\N".0+@e&??7@ nt4+" 02R@Q".RA7A0+$.2Ab nt4+"B0+`&_N^ _NNVpN)l/ G n//./././. /.<N7@&_N^ _NN)lN)lN)lN)lN)lN)lRkSkN)lN)l\:/NV/ G=|2=|=|=|Bn=n/Nv p?Nv p@NvpANvpBNvpCNvpENvpFN~vpGNvvpHNnvpINfv pJN^ _6 "$// ////??<KNAO,_&_NuvpLN.v $?//pNNvpONv pVN vpWN(_?NATN(_?NA@TNNV/ GF nf N=@ ndp?.N,J@f`\N-@HnzNn |'dC~"Q0.|A@9'jHnN@H-@?.N,-@/.N$&_N^ _TNNV nR@t:Bf(U nN'A0|A?N$` ??<HnNz7@Jkm&?+Nv7@.A0?HnNV7@Jkm6 n0Bk n2HABAHA AB( n2HABAHA AB(0+D@`&_N^ _NNV ne n2b2.AH A g/9@4.BH B s#@=nJncx*y@0-24Be@Hmr2 /?.N'@*y@BmJl +D7@#@`z n t*y@4-"BR SnRm`*y@|#@Bkp0.'@`2Bk/. r2. /?.N '@Jl +D7@N^ _PNNV neB n2b82.AH A g"/9@4.BH B s#@=nJnc*y@0-24-BeHmr2 /?.Nf'@*y@BmJl& +D7@r2. A|#@`d +t*y@4"Uz:. ECBm +;@Jmf0.nH@B@H@'@#@`r*y@2- A"n R SnRm`#@Bkp0.'@`Bk n2bjt4. B(JgVr2. AB(r2. A"n ( . R/4.SBHBBBHB"/?.N6'@JmR`/. r2. /?.N '@Jl +D7@r2. A|`JWt4. B@N^ _PNNV/ GF n 0 @c` n 0 @e n 4 B2b n :EH E g/9@ n 4BH B s#@*y@JmcZ-JgP.JgFHmr2- / n 4?N '@*y@BmJl +D7@#@`^ n 2AH AHs*y@8PDHDBDHD&/N2#@ n 2?NH'@Jl +D7@`Bk&_N^ _\NNV/ GF?./.?. NJkf + n0` n0&_N^ _ NNV/ GF?./.?. NJkf + n0` n0&_N^ _ NN)lN)lN)lNV/ GF?<?./<N-@?<?./<N'@Jl +D7@p`"`?<?./.N-@ +`&_N^ _TNGFr-p??7@2+AH A'02R@QNu@:*.*HNu>p02@0Nu0/lD@?@ _TN _0@NS@gVf JAgmJ`JNuNu _ am znNH@B@H@Nu>p02@0NuNFQN(NQNNQNNFQN @g,NVf _.IN! R _.IFfSNNfRN Am~>G@l7xARA'drNr _gRNДA _N RAQN Am$~>懾@l??0<`7x02Nup _Hy@FNgRACSNuACSNu @lpNu"_.HN PN Am~>懾@l??0<`F7x02Nug @0(` @ ("P$_gR (OgS!Q NO @gNz @oJ$//?< NAOHy@o?< NAO N:Hy@v?< NAO2<0<QQ2 _?<LNA _p Hy@9N/H@N NNu?@N 0NNuN NNu l0NW??<NAONu /lD/@ _XN//Nf"N "ANu//Nz"N*"ANu.HA/HGBGЇ.HGHAHGBGЇNu.HA/HGBGЇ.HGHAHGBGЇNu lD lD`NDNu lD`HA AfHA.B@H@H@HG>HG0NuHAe8B?<eRF`ЁeQ`eQ< SNupNu#"(gT} g" gDopHy@ |N "_.@!@/ //?<?<JNAO N"_.@/ Nu o0 @f #@NL @f#@N8 @f !y@N& @f0( WN"y@#H3@ iN _ON _ @Nпn _p Hy@_N N _> N _> N _ B@H@N _ H@B@H@NA=#@ <+"<N+N$N6 4:: p "@ "2 : "2 F X ": 2  2 B.6 H 8$ & B4T X, ~.,F $L@BHB tļ".j.H( > ( 2&$h" ">$.<& (zh L2O''   @@?@ 'O2wuҗuҘt2wuwuO' @?\HMH\HLHMH   3 誨@@]\UU]\@@?A!!!!!!!!!"UT**:**ـ  UWUЀРPPPP[R["Y۶ٶ۶PUEŠDOUUU????????????UQ*UQ*@DTJ)RP$  J$(9Ng1sBBBB NBB)BBB   !#%6G G X Y Z k l        O 54   / k <B      j r s     % 7 8# 9 > L N S a c h s u z     7;F Ohevwx    8<PT A    T4 t   T4 t   T4 t  4 t 4  t  4  t4  4 C#t =%@ C' G       %CL  Au  A A        8 Tp'1;E ' 41 P;  lEC  +2 5 CM < A      !' !01 !L; !hEC6 ! ! I PS Y     ! _ e h  k  n  q  t  w  z } $#  (  9 !J"[#gx.%-  &'()*+,-$?/>0$152E3U4e5u678 9 : ; < =>.F@EA%B6CFDVEf?vUGT H I J@ K L M N O P Q R  S T$ F1 dVcW?XPYaZr[\]^_ ` a b c U  e f0g1h2!i31j4k5l6m7n - o0p1q2r3 s4 t5 u6 v7 w8x9yAzB {C |D }E ~F  : ! ! d m   y  0123456789ABCDEF    ! " ",  "H "d   0123456789ABCDEF   D"3     ""      CF   "    ("B       #8"# (N   %  &#(!#D       '    2  @  N \#` t { 1 ~                        (%                     #|  ' "'# # ## $ $$ $@ $\  $x       #         %  ,2  $ C(H$  $     (\  (j(x (% J%& E&.&P5&r;&'& &  &@ '! '> '`.'E' ' ' ( #  (,/      B          '  .  4 < #0DINSX]$# br    !"# .%- &-'>(O)`*q+,-$?/>01234506E7Z8o 9 : ; < => .F@EAB)C9DIEY?iUGT! Hz I J@ K L M N O P Q R S  T F$ dVc)W2XFYZZn[\]^_ ` a b c#U7 e0 f0g1h2!i31j4k5l6m7nK o0p1q2r3 s4 t5 u6 v7 w8x9yAzB {C |D }E ~F X $ % d 6   0123456789ABCDEF  > % %< %X  %t %  0123456789ABCDEF ,  %RY \((),$,-.>?t?A AC4DF4HJlL4\`bN Hk?<p9B2A?NEHk?<9A0?NE/+?<N> @fHk?<p9B2A?NEHk?<9A0?NENuNV/9?.NH-@B. n vC2pN:Jf nYf |`|.Nc"N^ _TNNV/9j n#j?<?< HnHnHnHnNZ7@Jnf #j`0.249:Bf*yj?-?-?-N`0.249~BfD*yj?-- Bg- Jf - JgR*yj?-?-N`,0.249Bf*yj?-?-?-N/r#jN^ _XNN.JgJN[ ?<N7@/9<N7@N7@N7@pAN`NuHy>/<5/<6Hyt/</<Hyt/</<NNlNuNV |vO"O"""2N9RJg<?<HyN7@`<?<HyN7@<?<HyN7@<?<HyN7@<?<HyN7@<?<HyN7@<?<HyN7@<?<HyN7@<?<HyN7@<?< HyN7@<?< HnN7@<?< HkN7@<?< HyN7@<?<HyN7@<?<Hy2N7@<?<HyN7@<?<HyN7@<?<HyN7@/.?<NH#~/.?<NH#/.?<NH#/.?<NH#<?< HyN7@/9?<NH#/9?<NH#/9?<NH#/9NeB/9<N7@?<N7@NWJgNA`/ GzN&_Nu#Ƅr?Hk?<ND48BN]TN^<NNN^NuNV2.0. @e8??=@?.2.4*yf6-CWNb02R@QBg ng nfRNN^ _XNNV2.0. @e??=@/9?.NH-@/9n n#n0.2*yf4-Bg*(yn, rApN*ynB `&*yn- rApN~*ynB #n02R@Qd<NN^ _XNNV*yf?-Nb/9*yf?-NH*yf+@ m vC2pN: nN^ _XN/9fNV#f/9j n #j*yj Ue$ Ub?-N[Jf #j`*yj?-?< HnHkHkHkNZ7@*yj0 @ g`=m/9?.<NR7@?.N[Jf Jnf*yj=m0. @g`BHy/<c/<dHyt/</<Hyt/</<N` @g` N `l @g`N@`T @g` N`@ @#g` Nd`, @g`Nf@` @g` N` @!g` <N`N^<N`` @g` N` @%m @'o`@09~24.Bf2.|%N`2.|%N<`z @*g`:?<Hy/<5/<6?<N`Jg<<N`8 @,g` yg?9NKT` @)g`v yf JyoRJyg(N*hJg<ND\?9~N]`NJy~o?9~N]` <N` @/m @;o`?.NbN`p @0+]@2+>rA;@09prA7@L0+LT@7@Z0+R@7@X+pJf.9tJg"0+N2+<pAR@7@P7kPR`7kNR0+RV@7@T0+T@7@Vp4+JkTRBHBBBHB"7AD0+D@7@B?</A??+N N^ _PNNV n 0 n00.24+TBc&0.24+VBc p`>`p`4`0.24+ZBeF0.24+XBe,6.8:+TEd<.02+HAd p``p``X0.24+LBdB6.8:+Ee2<.02+Ae"0.2+RSAAd0.24+NBfp`B.0.24+NBc|0.kNk=@+pJg+qJf|0+<4.kHBBBHB" n 00+>4.kHBBBHB" n0.`N^ _ NNV=n=n0.n=@0. n=@Jnl0.D@=@=|`=|Jnl0.D@=@=|`=|0.24.Bl"=n=n=nBn=n` =nBn0.nn=@0.n=@0.nnn=@?</r?N N^ _XNNV?</`" @g`=kVBn0.24.Bc6.8.knSDDdr0+T6.CH C2+DA=@4.BH B0x8+B&=C0.24.Bc"6.8.nSDDd?.Nb`ZRn9tJf2.RA Af=| nf`(2.AH AJPf0.kn=@`+Jg<ND\` N`&_N^#f _\NMaskData[2][ ][ OK |Cancel]Really Clear %1 ? Really Fill %1 ? Really Copy %1 to %2 - This will lose %2Really AND %1 with %2 and store in %2 - this will lose %2Really OR %1 with %2 and store in %2 - this will lose %2Really XOR %1 with %2 and store in %2 - this will lose %2Cover %1 to give %2 - this will lose %2 and clear the outer pixels of %1[2][| Really Lose Edits? ][ OK |Cancel] BitMap Editor NV/ Gp/9j n#j*yj mc;|*yj/-/+?-?-N:(*yj//+ ?-?-N:(*yj mc;|*yj7m7m|#j&_N^ _XNNV/ Gp/9j n#j*yj;k;k/+/-?-?-N:/+ *yj/?-?-N:#j&_N^ _XNNV/ Gp/9j n#j*yj0-@7@7m kc7|*yj//+?+?+N:( kc7|'| B+#j&_N^ _XNNV/ Gp/9j n#j/+*yj/?+?+N:*yj;kpt4+";A#j&_N^ _XNNV/ Gpr6+HCBCHC$0H@B@H@-@+Jg n -P/9j n#jr*yj6-HCBCHC$0H@B@H@-@Hm/.NR*yjHU/.NR*yjHm/.NT*yjHU/.NT*yj;k;k#j`t n -P/9j n#j*yjHU2-HABAHA /NR*yjHU/.NTpt4+"*yj;A;k#j/9j n#j*yj;k;k#j&_N^ _XNNV/ GpHk/<NTHk /<NT.Jg n -PHn/<NT/.N(/9j n#j/9n n#n*yj(yn*HTt8,HDBDHD&2HABAHA /NR/.Nd*yjBmBm p n HBBBHB"A n Hn/<"NR#n#j` n -P-k /.Nh'n Hn/<"NT/9j n#j/9n n#n*yj(yn+THU2,HABAHA /NT/+ N9/.N n *yn- AA n (yjB, BlBlBlBlBlBlBlBl HlHl N##n#jHn/<NRHk/<NRHk /<NR&_N^ _\N _$_"_r$$$$QN _$_"_r    QN _$_"_r    QN _$_"_r    QN _"_rp""""QN _"_rp""""QN _$_"JCp~$$$$QBBBBN _$_E"JCp~%!%!%!%!QBBBBN _"_~ ")$)&) <""""QN _"_~ ")$)&) <""""QNa&QgpNpNagpNpNa NaN(_ _"_pr02H$IIArE2 Nprt&0x@S@2"_ _/vItASA:vCj6zEH262Q6kBYQQ4k BBBBQNuprt&0S@2"_ _/ItASAB62QQNua"H8vI4SB6KfC.,*($HC""""E$$$$CQNuaSAH6SC"H$I8~|!aHFaHFHFQAQNuggggggggNu"_,02 _/NNV/ G~/9j n#j*yj=m=m-@ f k "n~"Q` k"n~"Q#j/./<N%/9j n#j*yj;n;n#j&_N^ _XNNV*yfJmf`/+,*yf?-HnHnN7@L/9n*yf m#n/+,?-NK=@/+,?.NH-@/+,?.HnHnN7@L*yn?-?-?.?.?.?. n0? n4?HnHnND7@L0.n*yn;@0.n;@#nN^NuNV/. ?./9?9N2(N^ _\NNV/9?9<.N5N^ _TN/9?<N/9?<N>7@L kLf <NNuNV/9?<Nn/9?</.Hy/<P/<QN?*yf+@/9?<N>7@L kLgHy/<P/<Q*yf/-NB2*yf@ kLWN*yf-JfD/9n m#n(yn9yZ m"/NJX*yn;@#nN^ _XN/9fNV#f/ G~/+,?<?<*?.?. N=@Jnl`/+,?.NH-@ nfl/9j n#j*yj-@ @g @g @g` N>`& @g`*yj-m ./NP`#j`9tJgNND&_N^#f _\NNV0. n 2Ac n 0N^ _\NNV/ G~'n \n` |GCN2 yg y /?9NLHkN(HnNIn/9jA#j n*yj;P n;Pp@ #jHkHn? n .м4/ n "/N#?. N~=@ /9?. /.?<<N&&_N^ _\NNV/ G?. /.N?. N&_N^ _\NNV/ G.@rAg4.BvCf yD|Ff/9N8.@rAf y@tBf" n$f/. ?.B?.@N`^ 9м/?.D/. ?.B?.@NHHn?</9?.D<N&/9<N8?9~N]` HnN`|.@rAfhHnHnN=Hn/<N%/9Hn?.DN#-@ 9м/?.D/.?.B?.@NH?9~N]&_N^ _>NNV/ GN?.NJg/9?.N)`` y /?.NK=@Jnl`B y /?.NH-@ y /?.NH-@ n7P n7P 9м/?.A`""O O O GN*&_Nu"/NM nX=P y /?.NH-@ nX=P y /?.NH-@ nT"n2 nX0 n0 y /?.N(7@/9N),?9~N]&_N^ _TNNV/ G/.N("n n """" n "n n @ @g @g`P n 0J@c/. ?</.?<<N&"n" n """""` @g`2/. HnN=Hn/<N% n `^ @g`& .м/ n "/N#`0 @g`& .м4/ n 4"/N#`&_N^ _PNNV/ G/. N8 n -P/. N( n"n ~ "Q n  /9j n#j*yj+|BmB-#j/. <N8.Jg/. /.N&_N^ _ NG| | NNu[1][ Delete Children too ][ Yes | No ]NV/9j n#j*yj:9^+ApN~*yjAy6y5yy4#jN^ _XNNVB...ApN:Jf.BvCdR.`.`N^ _TNNV/9j n#j*yj-Nc"?<W*yj-Nb?<V*yj-Nb#jN^ _XNNV/ G/./. /.<NHnNHn?<N<|&_N^ _ NNV/ G.Jg n//./. N`/././. <NNJfHn?<N&B+JnfHn?<N&HnN"/9jA#j*yj-NrN $*yj564#jHnN&_N^ _NNV/ GB./.".\$.0?N< n\//</<NHn?<N<&_N^ _XNNVBn .t4."Ё/N nv6.$@xDf`Rnr2.$&. c``N^ _ NNV/ G/.".\$.0?Nd@.Jg .\//</<NL` n&_N^ _XNNV/ G+Jg|HnNN&_N^NuNVHnN.@r Af HnN*yfBm.@r*AfHnN.@r*Ag*yfBmr*yf2- An~RmHnN.@r Ab.@r Ag".Bv CbHnN`*yf mdr2- AB(~*yf mdr2- AB(~*yfBm.@r Ag2*yf md"r2- AnRmHnN`*yf mdr2- AB(N^NuNVBn nBPr2. A*yfhRn.@r0Ae:.Bv9Cb& n0 .C4B|0 n0```N^ _XNNV*yfA//</<Ny=@Bn |^"n~"Qr2. A*yfhRnr2. A*yfhRn.@r-Afr2. AhRn nO"O~"Q |^O"O~"Q.B.Ap Nnp N"n~"Qr2. A*yfhRn`8 nO"O~"Q.B2p N~"n~"Qn.@r,Afr2. A*yfhRn0.24.BcN^ _XNNVBnHn/<NTNX*yfA~"|^2<pNXf*yfA//</<NyJ@ch*yfA//</<Ny2SAp@e>??=@r2. A"n8.nHDBDHD&*yf02R@Q0.?*yfA//</<Ny28A=D nt4." n4.RBHBBBHB" TnNN` nt4."BRn/.r2. /NT/. n /?.N`Hn/<NRN^ _XN/9fNV#f/ GHy_/</< NNJgp`.N|A~"|_rxpNXf6/9j+B2XA#j |^*yjC2+|+|+| +| |_C~"QAO"O~"Q |_:O"O~"Qp N*yjC4~"Q38B9NA~"|_rxpNXg0A~"|_\r}pNXgA~"|_`r|pNXgJA~"|_fr|pNXg2A~"|_lrzpNXgA~"|_tr|pNXfA~"|_`r|pNXf*yjHmN`dA~"|_fr|pNXf*yjHmN`:A~"|_lrzpNXf*yjHm N``*yjHmNN`(A~"|_zrzpNXf.@r.AfPHn/</<?<?<N{~A//</<*yjHU/</<N{0`>Hy_/</< Hy^/</<Hy^/</<N`jA~"|_rypNXf*yjHmN`@A~"|_rzpNXf*yjHm4N`A~"|_rtp NXf*yjHmTN`A~"|_rzpNXfdU.Nx@ @Ng`*yjB-V`6 @Ug`*yj|V` @Lg`*yj|V``rA~"|^2<pNXfA"|^2<pNXg>Hy_/</<A~//</<A//</<NNA~"|_rxpNXgA~"|_\r}pNXf#jS+A~"|^2<pNXf$A"|^2<pNXf N$`xA~"|_\r}pNXgA~"|_rxpNXf`DHy_/<%/<&Hy^/</<Hy^/</<NNA~"|_\r}pNXfNp`&_N^#fNuNV/ G/9j.B2XA#j*yjA//</<Hy/</<N{0*yjAC~"QA4C~"Q3T8V### ##jn&_N^ _TN/ GHk/<(/<)<NTHy7?<N&?<a97NbNAd//</<Hk/<(/<)N{0&_Nu/ GHk/<(/<)NHy7?<Nt4. B(@v\Cg A"|pr y@tBf/9N`N~?9~NU-|-|-|-|-|-|BkBnBkBnBkBnBkBnBkBnBnBn/9jA#j*yjBmBmBm #j |r2SA=A2.p@e??=@?.N-@Hn/<8NTHnHn?.?<?<NN n4.BH" /. nN*z"n n"""" n@ @g  @g`Rn"n" n""""" n@tBf /.N n2SAp@e2??=@ n /?.NH-@/./.? @g @g @g @g`:*yj/- NH@B@H@*yj+@ ?-?-HmHmN` @g``*yj-m d/9n nd#n/.(yn0,@??,N#n*yj/- NH@B@H@*yj+@ ` @g`\*yj-m `/9n n`#n/.(yn?,?,N#n*yj/- NH@B@H@*yj+@ `*yj?-?-HmHmN*yj?-?-HmHmN#j/.?.HnpN /.?.HnpN!602R@Q n@tBf /.N8` @g`.Rn n"/NXH@B@H@ n `n @g`.Rn n4"/N"H@B@H@ n4 `8 @g`.Rn n"/NH@B@H@ n `02R@QU?.NLJg0HnHk?.?<?<NN nt4."BRn/9jA#j*yj:;|$ 0- n;@0-n;@ 0- 2-AA;@0-2.A;@0-2."A;@0-2.A;@0-2- AA;@0-2.A;@;n;n;n;n0-2-AA;@"#j2.p@eZ??=@/9j n6.CH$ P#j*yj-@ @g @g`2-SAp@e??=@*yj/-?.NH-@/9n n#n*yn-@ @g @g @g @g` - t4."Ё+@ `N @g`*yn - t4."Ё+@ `( @g`*yn - t4."Ё+@ `#n02R@Q6`( @g`*yj -t4."Ё+@`#j02R@Q2.p@e`??=@/9j n4.SB"H"#j*yj t4."Ё* -t4."Ё+@#j02R@Q2.p@eN??=@/9j n4.SBH"#j*yj t4."Ё*#j02R@Q n//./. NHk/<??=@U2.H A*yj(Nx6.n0J02R@Q#j0.nR@B3JAJ"|rr=pNXgAJ//< nCz4Ed(Hy2?< nA0|0?NE`Hy2?< ?<NE` @g @g`N*yjA"C""""A"-H/.?<HnHy/<P/<QN?-@`D @g`:B.A-H/.?<HnHy/<P/<QN?-@`/.?</.?7@*yj-@rAf& kgHy2?< ND|0 n0+ @g @g @ g`r*yj-@ @g`@BgHy/<P/<Q/.NB2Jg9JgR`F @g @g`6A//<P/<Q*yjHm"/</<N{0`/.?<<<N5*yjACrpNXgN*yj-@rAg-BvCf&*yjA"CrpNXg 0+ @g`/.NZ`, @ g`<N7n"`?9:N]` @g`?.N` @g`/.HyN`j @ g`0*yj+m4|+|N ?9:N]`2 @g`(*yj+m4|N?9:N]`#jN^ _TNNV/ G/9j |r P#j*yj0-mS@=@#j/9.A0|?NH-@ |r2SA n0Hyr/.?<N#-@.NP n |r f n "|r" nRP n / n4?NHy/</<A//<O/<PHy./</<NN^ _\NNV/ G/+?<N>7@ kf /+?<NH-@/.<NJ&_N^NuNV/ G/+?<N>7@ kf /+?<NH-@/.<N&_N^Nu/ G f`/+?<N> @fHk?<NF7@0+ y2Ae:Hy/</<Hy./</<r2+ /N*`^Jyo<<NN y@tBf ?+NԠ?+NR?9~N]&_NuNV ncn/9?.HnN A"|.rpNXf |C~"Q` |C~"QHy/</<Hy /</<A//<*yj/-?<N>7@?+NJg/9<N7@`>Hy6/<1/<2Hy./</<Hy./</<N#j`( @g`N~/9N/9HyN^?<N7@ |/<N7@HnN7@ n f |/?.<NR7@/9<N7@?.NJg?<N7@/9N8N֔`X @g`N/9N` y4-P?< n//</<N7@?+NBJg`?9~N]&_N^NuNV n 0 n4Bd p`4`0 n 0 n4Bc p` `p`N^ _PNNV n 0 n4Bd p`4`0 n 0 n4Bc p` `p`N^ _PNNV n0 n 4Bd p`4`0 n0 n 4Bc p` `p`N^ _PNNV n0 n 4Bd p`4`0 n0 n 4Bc p` `p`N^ _PNNV/. N2-@/.N2-@ n"nrp0<NXd p`0`, n"nrp0<NXc p` `p`N^ _PNNV kp4. RBBH"0p`N^ _PNNVHk?. ND@ n TN^ _\NNV/. /.AhN@.@rAf/. /.AlN@.@rAW`N^ _PNNV/ GA`""O O O GN"&_Nu'HTA`""O O O GNX&_Nu'HXA`""O O O GN&_Nu'H\A`""O O O GN&_Nu'H`A`""O O O GN&_Nu'Hd/+?<N> @fF?<HkhNn?< HklNb yf` y /?9NH-@ 9м/?9NNt=@ nd`Hkp2.RAAHABAHA /NT 9м/?9A`""O O O GN&_Nu"/NM2.p@e??=@ kp4.BH"=P kp00.S@=@ y /?.NH-@ y / kp:.EH(4?NH-@/./.N6Jf`, kp4.BH""kp:.REEH(2Sn` kp4.RBBH"002R@Q(2.UAp@eH??=@ y / kp:.REEH(4??.N7@02R@QHkp2.RAAHABAHA /NR/9N),?9~N]&_N^NuNVHk?. 2.H /NF*N^ _XNNVHk?.NF"0`N^ _TNNV/+?.NH*yf+@0.24-Bf0 mP0?vC2pN8*yf mP0`2*yf mP0?vC2pN~8*yf mP0N^ _TN/9fNV#f/ G yf`Jyf?9~NU y /?9NH-@/9j n#j?<*yj?-N?<*yj?-N?<*yj?-N?<*yj?-Nt?< *yj-A0?NZ?<?9NL?< 9м/?9NNt?N( 9м/?9NO=@?<?.N y /?9NK=@?<?.N*yj-B2AH A=PJno/+?.NK=@`=|?<N?<N?< N?<N?<NJno$Hk?.Hk?.NO?NE`6/+?<NH-@2.DAAH AN"n E& "/+?<N> @ f?<N*yj;@?<N*yj;@?<N*yj;@?<N*yj;@?< N*yj@Jno/+?.Hk?.ND?NO=@=|2.AH A468.DgRn`2.A*yj-Bgl ng nfX ng&?<Hyj/<?/<@?<N*Jg&0.*yj@/. nWNd`0.*yj@?<N=@0.24.Bg>=yN y /?.?.N7@/9N),?9~N]#j&_N^#fNuNV n PP0?xD2pN: n PP0p`N^ _PN/ G ygZ 9м/?9A`""O O O GN|&_Nu"/NMN?9~N]&_NuG'|NuUntitled[1][ You may not edit | more than one tree | at once. ][ OK ]Free String[0][ Alert ][ OK ] Name %1 not foundString %1 not foundNo object number %2 Returned with value %2 . This has no name Returned with value %1 = %2 [2][ ][ Test | Exit ]D Can't test form because there is no exit buttion[2][ Really change type ? | this will loose info ][ Ok | Cancel]NVpN"p(N"Bn n,0&.$4Bb8.,. :Eb n("n,0H@B@H@@rAg~ n("n,:HEBEHE(Bp;@gX"n( n,0H@B@H@@t,Bg4 n("n,4HBBBHB""n|<.*Rn n,RP`@Jnfp` n("n,6HCBCHC$@z;Eg& n($n,0H@B@H@Fp,@f n,RP n6.SCHCBCHC$@x\Dg nt4."\`SnBnRn0.$.2AbX n|<.*Cp@g80.". Ad* nt4.""nz:.(RnRn` nt4."Bp`N^ _(NNVBkt4+ B(@v CfRk`r2+ Ah.@rAf`4Rk.@r Af`r2+ AnRk`r2+ AB(N^NuNVpN"Bnr2.$&. bL np0.,Dp@g, nt4."x8+"DPRkRkRn`N^ _ NNV kcpk=@2.SAp@e2??=@r2. Av6+"ChRk02R@QHy$/</<NHk/</<?<?.N{~0+ΐn7@Bk`h0+k @cHy$/</<NBkA//</<NHy(/</<NN^NuNVBnBn nv6.$@xDgz|<. ". bh nv6.$@x|Dg@ np0.Ep]@g" nt4."x8."DPRnRn`jr2. AB(7nN^ _ NNVpN"pN"p(N"p4N"p@N"/ Gb n(//.$/. Hk/</<N{0BkBk n@//.r?<?<Nr?<?<N<N . м4//.N#Hn?.?<N&_N^#f _XNNV/ Grp??=@/+?.NH-@/././+?.NK?N#-@02R@Q&_N^ _XN y PT7P y PX7P y /?+NH'@ k T7P y /?+NH'@$ y /?+NH'@ kT7P kX7PNuNV/ GNPBg2.46+Cg(8.:<+Fg0.2+Ag JnfR`&_N^ _TNNV/ GN=|=k0.24.Bg. y /?.NH-@ n=PRn`0.`&_N^ _TNNV n PT=P n PX=P=n =n y /?.NH-@/9j n#j*yj0-m24.Bc0-m=@*yj0-m24.Bc0-m=@#j0.24.Bf` n=P`b/9j n P#j*yj;n;n#jN^ _PNNV/9j n #j*yj=m=m=m=n#j nT=P y /?.NH-@ ."$. g|/9j n#j*yj0-24.BcP?-?-?-?-?.?.?.?.HnHnHnHnNdJg*yj0-n=@#j0. nX2Af` n=P`8 n 0N^ _ NNV/9j n #j*yj=m=m=m=m0-m=@#j nT=P y /?.NH-@ ."$. g/9j n#j*yj0-24.BeL6-8:.Ed|8*yj0-k.24+4Bd ;k4`*yj0-k.;@#jp`N^ _PNNV'n */9j n #j*yj7m.7m07m2#j7n 67n4B+8 9м/?.A`""O O O GN&_Nu"/NM+8`N^ _ NNV/9NNr/+ y /NJT/+/+ NJT/+ /+$NJT/+/+NJT k$T=P k$X=PBn=k y /?.NH-@/9j n#j0.*yjm=@;nBm09:V@;@94Jg\-m n//<P/<QNyS@=@Jnc( nv6.$@x DfSn`Rn`*yj/- NJ=@0.R@8*yj;@0.m=@#j y /?.NH-@Hn?<?<NP/9j n#j*yj0-n;@Bm=m#j nT=P y /?.NH-@/./.0. n2A?N0. nX2Af` n=P`0.24.Bf` n=P n=P` k$0/9NN^NuNV/ GN/9j k$#j nf N\` k *yj;P#j=| y /?+NH-@0.24.Bg nf* nP0?vC2pN8 nP0`& nP0?vC2pN~8 nP00+24+Bf` n7PRn`Z ne Bk`?9~N]7n&_N^ _TNNV/ GN=n y /?.NK=@=n=n0.24+Bg6.8:+Eg nf0.24+Bf=|0.24+Bgz y /?+NH-@0+24+Bf n7PRn`z?.N&_N^ _TNJy~g( y@tBf ?N*&_Nu/ G g( y@tBf ?+>N&_NuNV?*yj-@ @g @g @g @g` n -P n 0 @fd-@ g-A f"09Zy>y:*yj;@`*yj;yZ09X*yj;@`#j/. N&_N^ _PNNVrp??=@-n -n n"nR R02R@QN^ _PNNV n -PBkBk7|Bk7|/9j n#j*yj/HkNx*yj/-HkNf#j?<HkNb7@$N^ _XNNV/ Gn.@ @g`?</p@ ;|/.N` @g`Hy/</<N ` @ g`Hy/</<N` @g`(Hy/</<<?<?<N` @g`(Hy/</<<?<?<Nj`j @g @g`/.N;`L @g`B/9n n#n098@*yn;@09:@;@#n/.N`#j&_N^#f _\NNV?. ?.N=@Jnl`v k@tBfBn n ^@ f`> k /?.NH-@ +м/?./. ?. ?.N~/9j n #j*yj0-m n2Ac. n046-Cc n0m;@*yj0-m n2Ac. n046-Cc n0m;@#j/. <N/+/. ?.N#-@ k@tBf /+N?9~N]N^ _PNNV/9?.NH-@*yf- Jg mP0?. C2pN:Jg2 n vC2pN~ n `. n vC2pN n ` n vC2pN:Jg8*yf mP0?. C2pN~8*yf mP0`4*yf mP0?. C2pN8*yf mP0N^ _XNNV/9?.NH-@*yf- Jg m . C2pN:Jg2 n vC2pN~ n `. n vC2pN n ` n vC2pN:Jg@*yf m . C2pN~*yf m `<*yf m . C2pN*yf m N^ _XNNV/9?<6NH-@*yf- Jg m vC2pN:Jf2 n vC2pN~ n `. n vC2pN n ` n vC2pN:Jg>*yf m vC2pN*yf m `:*yf m vC2pN~*yf m N^Nu/9fNV#f n /?.NH-@<?</N<?<0N< ?<2N< ?<1N< ?<3N< ?<4N<?<5NN6<?<7N<?<8N<?<9N<?<:N<?<;NN^#f _PNNVrp??=@/90.n?NH-@/9j n#j0.24. Bg**yj- rApN*yjB `&*yj- rApN~*yjB #j02R@QdN^ _XNNV?<JnWNb?< nWNbN^ _TNNV0.rN??<nNtx8.&0rN=@rp??=@0.|e?4.68.DWNb02R@Q6<z:.(0rN?N<6<z:.(0rN??<Nl2<v6.$0??<NRN^ _TNNV?< n WNb?< n WNb?<JnWNb?< nWNb?< nWNbN^ _XNNVr p/??=@?.<Nb02R@Q?<?<nNrpe??=@?.<Nb02R@Q?<N?<?<N\?<?<NP?< ?< NN^NuNV/9?.NH-@ n xD2pN:`N^ _TNNV/9?.NH-@ n xD2pN:`N^ _TNNVrp??=@0.n?NJg n 0X` 02R@QN^ _\NNVHn?<nNrp??=@0.|e?N Jg=n02R@Q0.2.AA=@?<NJgnHn?<NN0.2.AA=@Hn?<N20.2.AAA=@?.N0.`N^Nu/ G yg /+?9<N?9~N]&_NuNV/ G f` k@tBf(Hn?<N?.?<N @fHk?<NF n0N^ _XNNV/ G yg k /?9NH-@/9j n#j*yj-@ @g @g @g`(- @=@HnN0.*yj@ `> @g @g @g @g`"*yj-m .м/N`?9~N]#j&_N^Nu/ G yg( k /?9NLNp3&_NuNV/ G k@tBf?.NʤJg`3 k /?9NL/+?9<N k /?9NH-@/9j n#j*yj-@ @g @g @g`?-NJ`* @g @g @g @g`f*yj-m /9n n#n(yn?,N*yn?- ?-N?<*yn mWNb#n` @g`.*yj-m n A0??<N`t @g`j*yj-m /9n n#ntx(yn, &C0??<N`*yn- rN@??<nN@#n`#j&_N^ _TNNV/ G?.?<N&_N^ _TNNV0.24+Bg/9j n P#j*yj?-rApN:Jf*yj?-?-?-?-?+?+?+?+HnHnHnHnNpJgn*yj0-24.BfF6-8:.Ef6<-02.Af&0-2.Af7np#j`$`7|p#j`#jp`N^ _PNNV/ G n  /?.NH-@/9j n#j*yj7m7m7m7m#j7n7| . м/?. A`""O O O GNb&_Nu"/NM0+`&_N^ _PN?<Hy/<//<0?<N`@NuNV k /?.HnHnN7@$/9j n #j7y8 7y:"*yj0-2498Bbpt498"7A ` 7y8 *yj0-249:Bbpt49:"7A"` 7y:"*yj=m=m=m=m0.mS@n 24+ Bdr6.mSCn8:+"EdX k /?.HnHnNHD?.?.?.?.*yjHmHmN7@$ k /?.NK=@ nfB?9~?<HnHnHnHnNZ7@$0.n=@0.n=@`F k /?.NH-@/9n n#n*yn=m=m#n0.*yjm=@0-24.̲BoJno;n0.*yjm=@0-24.̲BoJno;n`>HnHnHk$Hk$N7@$0.n n=@0.ސnn=@Jnfn?9~HnHnNV*yj?-?-?.?.?.?.?<'?<'HnHnND7@$*yj;n;n#j`` k /?<NH-@ k /?<HnHnN7@$*yj=m=m?-?-?.?.?.?. n0? n4?HnHnND7@$ k@tBf$ n ^C f0.nR@=@ k /?.NK=@ nf #j` k /?.NH-@ k /?.HnHnN7@$*yj=m=mBmBm k /?<?<*?.?.N=@*yj;n;n k /?.NH-@ k@tBf n ^C f n^E f|0.2.AgnN"+Ҽ/?.NOS@=@0.24.BoRn k /?.?.N7@$/+N),#j`` k /?.HnHnN7@$0.24.Bm6.8:.Emt<.*yjm0."n2A@nN0.m2. n4BAn.6.8:.Ef0.n;@0.n;@`` k /?.HnHnN7@$0.*yjm2. n4BAn8.m:. n<FEn?<Hy/<7@$ k$f <NNuNV/+?<Np/+?</.Hy/<P/<QN?'@/+?<N>7@$ k$gfHy/<P/<Q/+NB2*yf@ k$WN94Jg"*yf-Jf/- k /NN^ _XNNV/+?<N*yf m -P/9n n#n/+?<(ynHTHy/<P/<QN?'@/+?<*ynHmHk&/<P/<QN?'@/+?<*ynHmHkx/<P/<QN?'@#n/+?<N>7@$ k $gHy/<P/<Q/+NB2*yf@BgHk&/<P/<Q/+NB2Jg*yf-JgR*yfBBgHkx/<P/<Q/+NB2Jg*yf-JgR*yfB k$WNV94Jg"*yf-Jf/- k /NN^NuNV/+?<N/+?<NH-@/.*yf m NL/+?<N>7@$ k$f&<N/.NL*yf m N^Nu/9fNV#f/ G+@ @g` k /?<?<*?.?. N=@.Jgd yg. k /?9?.NL@Jg =y k /?.NK=@Jne=nNXJnl`?.N k /?.NH-@ nf/9j n#j*yj-@ @g @g @g` N` @g @g`( n -P ./N/.NK ` @g @g`*yjHm Np` @ g`*yjHm NT?.NȎ` @g` N` @g @g` *yj-m N/.NK `X @g @g`H k@tBg?./.*yjHm <N?#j`2`/.<N k@tBf?./.N"#j`.JgJnoN|?.HyNH k /?.NK=@?.?.?. AO"O~ "QNI k /?<?<*?.?. N=@?.N8 k /?.NH-@ k@tBf?./.?.?. Nɀ`?./.?.?. N k@tBf /+N ?9~N]` @g`PNT?.?. N*=@Jnm0?.?.?. AO"O~ "QNI<NԴ`hNHn+A0|U@?Nٖ k@tBfHn?.?. NǦ`Hn?.?. N<NJ&_N^#f _ NNV/ G|Jyon .ND\.JgJy~oLNb NNB k@tBf /+Nj?9~NUHy~NZ gZ.Jg* +/Nf@HyP/+<NNH`(9JfHyP/+N, '|&_N^ _XNNV/ G yf".@rAf <N`|=yNL.@ @g`?.HyNI`J @g`*?.HyNH?.NB?9~N]` @g`<N҈`&_N^ _TNG'|Nu[1][Please click inside | the box ][ OK ]TEXTBOXTEXTBUTTONSTRINGTITLEFTEXTFBOXTEXT[1][ Object would overlap | another. ][ Cancel ][2][ This will give this| object a new parent ][ Ok | Cancel][2][ This object now covers | other objects. Adopt | them as children ? ][ Ok | Cancel]NV/ Gr |-H n=P/./.?.Ng-n nT n -P .\ n &_N^ _ N$NqNq /H z/HzNL@NuNV/ Grr9pA??@.B2AH A!|J02R@Q&_N^NuNV/ Gr0. n2Ae n0n =@0.24. Bd0.n =@`Hn2.HABAHA /NT n  g> n //. n4?N`/. n2HABAHA /NR n0 n &_N^ _NNV/ Gr n  g/. 2. HABAHA /NR&_N^ _PNNV/.HnNjnAO"O~"Q.B2p N:JgV.B2AH A-hJ f`. nCrpNXfp` n-P`p`N^ _XNNV n//</<Ny=@Jnfp`AO"O~"Q nB2p N:Jgl2.SAp@eT??=@AO"O~"Q nz:.(B2p N:Jf pX`02R@Qp` `p`N^ _XNNV/ Gr n "n"""" n //</<Ny=@Jncb0.2498Bc =y82.SAp@e*??=@ .t4."Ё/N`P02R@Q nt4."B&_N^ _PNNV/ Gr/.NnJg/.HnN0n.@rAfp`HnNJg p``tHn/<NT/9j n#j.B2AH A*yj+hJAC""""#j.B2AH A!nJp` `p`&_N^ _XNNV/ Gr/.NJg/.HnNLn.@rAfp`.B2AH A-hJ-| fp` nCrpNXf^ f& n.C4BH"B#PJ` n"n"Hn/<NRp` -n n-P`fp`&_N^ _XNNV/9j n#jHn*yj4-| HBBBHB rN/NT*yjJmc-BvCg*-DzEg-Fp@fr *yj6-| SCHCBCHC$ ;BJmcXHm2-HABAHA /NR*yjHm2-AHABAHA /NR*yj+|+|Bm#j&_N^ _XNNV n 6. CHCBCHC$Ђ n 2. n4BU`N^ _ NNV/ Gr/.?. HnNJg0 n P//</</./</<N{0`&_N^ _ NNV/ Gr/.?. HnN:Jg n-P-| ."$.fFHn/<NT n//</</./</<N{0 n `. n//</< n"//</<N{0`&_N^ _ NNV/. ?.HnN~Jg n N^ _\NNV/9j n#j*yj0-r NJ@f /.N *yj/-?-NH-@ n"n~"Q nP0?v C2pN~8 nP0*yjJmc/-0-S@?NH-@ nP0?v C2pN8 nP0Jn mJ/9n n#n*yn:;|;|#n*yj/-?. ?-N7@:*yjRm/.0-S@?HnN0Jg n *yj/-2-SA?NH#j`#jN^ _NNV/ Gr/./. ?.HkC"""""`#j&_N^ _XNNV/ Gr/9j n #j*yjn |>C""""+|.@ @g @g`/. N`d @g @g`/. N*yj+|4`: @g`*yj+|` @g`*yj+|`#j&_N^ _\NNV/ Gr . "$.fp``-n -n-n -n n@ nBgp`( n@tBfp` R R`&_N^ _PNNV ."$. fp`P".pe>//-@ n@ n Bg pP`RR "RSlp`N^ _ NNV . X/".X//< NpJgp`L/9j n #j*yj/ n"/8-HDBDHD&/N. #j`#jN^ _PNNV/ Gr n @ nBgp` n @ @g`. n "/ n&/N ``n @g`. n 4"/ n4&/N ``8 @g`. n "/ n&/N `n` n 0 n4Bgp`F n @tBg$ n CzEgp` n 0J@fp` n 2SAp@e??=@ n  /?.NH-@ n /?.NH-@/././<NFJg4 n -P n -P n "n "/././<NJg pX`0 n /9j n#j*yj-@ @g @g @ g`&/./.NJgp#jX``v @g @g @g @g`-n-n n"n2 n"n2 .м /".Ҽ //<NJgp#jX`@ n / n$/N`Jgp#jX` nX / nX$/N4Jgp#jX` nP / nP$/NJgp#jX``h @g`-n-n nP / nP$/NJgp#jX`z .м /".Ҽ //<NJgp#jX`D/9n n#np*yn4-HBBBHB"=A/ n /v6.$/NJgp#n#jX`*yn/- nX /v6.$/NJgp#n#jX`#n`J @g`2-n-n/./.NJgp#jX`h`p#jX`V#j/. ?.HnN/.?.HnNACrpNXg pX`02R@Q0p`&_N^ _PNNV/ Gr/.?.NH-@ n -P nf n C8""""`/. ?.Hk8NV n A8CJ""""&_N^ _ NNV/ Gr/9j n#j |>C\""""-|*yj-@ @g @g`-m n-P` @g @g @ g`*yj-m `n @g`*yjm \B+]`P @g @g`*yj-m nX-P`& @g`*yj-m nP-P`#j .`&_N^ _XNNVpN"BnBnBnAC~"Qr2.$&.bF np0.,Dp@g& nbAO"O~"Q nz:.(B2p N:Jg` np0.Fp_@gBJnfAC~"Q nt4.""nz:.(Rn`AO"O~"Q nz:.(B2p N:JgH np0.Fp_@g* nb nt4."x8."DRnRn`JncRJncJ2.SAp@e/</<A8//</<Hy>/</<NjHkJN@` @g`. Jg4 n f"n |>""""`/.?. N@`HHy>/</< A8//</<Hy>/</<NHkJN@`&_N^ _ NNV/ Gr/9j n#j*yjHUN(@*yj-@rAg-BvCfL*yjJmc>2-SAp@e0??=@/.?.Hk8N4Hk8N@02R@Q#j&_N^ _XNNV/ Gr r f` |>CJ"""" n C8""""/. ?<.<N n "|>rpNXf/. ?<Nx n 0J@cb n 2SAp@eL??=@/. ?.Hk8NT |>CJ""""/. ?..<N02R@Q&_N^ _\NNV/ GrHnHnN/9j n#j0. 2*yj4-Bdl2-SA0. @e\??=@/.?.HnNHnHnNACrpNXf n0pX#j`02R@Q#jp`&_N^ _NNV-n n//<O/<PHn/<O/<PN{0*yf m//-/-A//<O/<P?<Nx @OS`N^ _XN/9fNV#fpN"/ Gr0. n2Adr n2SA0.@eZ??=@ n /?.NH-@/9j n#j*yj-@ @g @g`< n -P n /NJg n 0p#jX`` @g @g @ g`4 n /NJg n 0p#jX``v @g @g`f n -P n /N>Jg n 0p#jX`F nX /NJg n 0p#jX``#j02R@Qp`&_N^#f _NNV/ Gr/9j n #j*yj-C4BH BA//</<HU/</<N{0Bnt4. B*yj5@v CcRn`=n=n n c(r v6.$|0z:. E*yjRn0.r N|0x8. D*yj2.RAHABAHA AB5HUN@tBf` Rn`p#j&_N^ _\NNV/ Gr/.NIn/9j n#j/9n n  P#np*yj@(yn0,@;@;l n +P #n#j&_N^ _PNGr |>C<""""r9pA??@6+6B2AH A!|J02R@QNuInvalid name %1Name %1 already exists - ignoredNV/ G/. HnHnHnHnND/9j n #j*yj mcBm#j/. ?<?<*?.?.?.?.N7@R/. ?.N7@R/. ?+RNKx<?.?.?.?.?.?.?.?.N4=@0+R`&_N^ _\NNVr*yf2-$&-d mt4-"RmN^ _TN/9fNV#f/ G-n n-PBnBn n-P-n nP.@r\Af Rn`Z0. @g``6 @g`<\ND` <\N8Jnc<\N(Sn`Bn.@r~Af<_N`.@r_Af<~N`.@rAc.Bv Ce.DzEe<\N<\N.@=@ ndetdx8.&|0Nd n e"x |<.*0r N|0N:0.r N|0N$< N` .NR.@rAgv6.(*.c``N nB/.?.NH-@ n -P n  .`&_N^#f _NNV/ GBnBnBn nt4."P.@r\Af Rn`\0. @g`Bn0. .B2A|0=@Rn nt4."P.@r0Ae.Bv9Cc``.@r AgSn0.@`R @g`r2. A\Rn`2 @g``$ ncr2. A\RnSn`Bn.@r~Af |_`.@r_Af|~ nPc`4r2. A.@rAf`RnRn`rA//<P/<QNyR@=@-n n-P n  g" nCrpQNXf p`p`lHnr2. /NTHn/.?.N` n  g(/. n$/NJ2RAHABAHA /NR n p`&_N^ _NNV n P xD2pN:Jg7n Tp` `p`N^ _PNNV/ G/. ?.A`""O O O GN&_Nu /NM0+T`&_N^ _\NNV0. 24+VBf6 n P xD2pN~ n P `2 n P xD2pN n P p`N^ _PNNV/ G7nV/. ?. A`""O O O GN>&_Nu /NM&_N^ _PNNV/ G n /?. NH-@ n -P n-P/.?< Hn/</<HnN2.p@m:??=@2.\AnH A"n8.H&02R@Q n4.RBH"B&_N^ _ NNV/ G n /?.NH-@ n -P n-PB=| nR@t-Bf=|Rn`=| nR@t@Bgv n4.H"P.@r0Ae.Bv9Cc`2 .r Nj.E8HDBDHD&Ѓ0-@Rn` .6.H"Nj`&_N^ _\NNV/ G8 . 4.HBBBHB"Ё`&_N^ _\NNV/ G8/.?.N-@ nT0 @f& nX4 Bf n 0 n0` n BP nBP nX=P nT=P/.?.NV-@/9j n#j*yj0-mR@=@0-mR@=@#j n 046.Cd n 0 n046.Cd n00.24.Bf` n=P/.?.N-@`f&_N^ _NNV/ G8/9j n#j*yj:;|;|p@p@ |P@C2p@ |P@C B BmBmBmBm#j&_N^ _XNNV/ G8/9j n#j*yj*@+U+U;| Bm;|BmBmBm;|Bm#j&_N^ _XNNV/ G8/9j n#j*yj=m=m=U#j n "n~"Q/9j n#j*yj;n;n:#j&_N^ _PNNV/ G8-nBn n@tBgR-nRn`0.`&_N^ _XNNV/ G8/9j n#j*yj/NR@*yj;@/-NxR@*yj;@#j&_N^ _XNNV/ G8/. ?.N-@ n vC2pN n &_N^ _\NNV/ G8Jnf 0<`R/. ?.N$-@ n=P/. ?.N -@ nX046.Cf` =n`0.`&_N^ _\NNV/ G8=n0.24. Bfp`"/. ?.NX=@Jnlp``&_N^ _PNNV/ G8 n -P n-P n&_N^ _\NNV/ G8 n -P n-P n`&_N^ _XNNV/ G8/. ?.N-@/9j n#j*yj- rApN:Jg**yj- rApN*yjB `&*yj- rApN~*yjB *yj=m=m#j&_N^ _\NNV/ G8 n /?. NF-@ nT=P nX=P nf`\Bn n /?.N -@Hn?.?.ANJg`$Rn0.24.Bf` n=P`&_N^ _ NNVRkp`N^ _PNNV/ G8Bk/. ?.A`""O O O G8N&_Nu /N0+`&_N^ _\NNV0.24+Bf7n p` `p`N^ _PNNV/ G87n n /?.N=@ nf p`F`B/. ?.A`""O O O G8Nj&_Nu /ND0+`&_N^ _\NNV0. 24+Bf7np` `p`N^ _PNNV/ G87nHn ?. A`""O O O G8N&_Nu /N0+`&_N^ _PNG8HkHkHkHkN7@ |P@CNuNV/ GL?. ?+?+?+?+N=@Jnl.?<Hyb6/<"/<#N7@0.`@`4?</=@?+?.*yj?- N`40.*ynm??.N=@?+*yj?- ?.N#n?. N#jN^ _\NNV?. N=@Jnc?. ?<HnHnHnHnNZ7@/9j2.A #j*yj gZ/9n m P#n=m =m 0. @g`0.n=@` @g`0.n=@` @g`0.k=@` @g`0.k=@`j @g`0.n=@`P @g`0.n=@`6 @g`0.k=@` @g`0.k=@`JnlBnJnlBn0.2*yn4-Bc=m0.2*yn4-Bc=m?.?.?.N#n#j?. N N^ _XNNV/ GL n0?N=@JncnSk2+0.@e8??=@4.RBA 6.C0 """"202R@Q n0?N7@ n0?N7@ nBP&_N^ _XNNV/ GL2+p@e@??=@2.A =P?.N7@?.N7@02R@QBk&_N^NuNV/ GL?.NJ@R`&_N^ _TNNV/ GL?.?</./<Nj7@&_N^ _NNV?+?<N7@=n=n 0.n S@=@0. nS@=@?+<Hn/</<N?+A//</<N?.N=@Jnc*?.?.?. ?. ?.2.A TNN^ _ NNV?</<U n|<+*NxB|@?.?. N`: @g`0<U nv6+$Nx?.?. N~`N^ _PNNV/ G-nBnByB+=|/9j n#j*yj-@ @g` -m ?.?. n /Nr`8 @g`?.?.*yj/- NN` @g` Rn`#j nP0?v C2pN:Jg`Rn`L&_N^ _XNNV/ G/9j n#j*yj@rAfN29p@e??7@/9n4+H BA#n*ynJg-A(yj,BgJ*ynJfx(yj,DzEf^?,Nt@*yn-Af>*yj/9rA#r(yr8 *yn9m9m#r#n02R@Q *yj mafN/9nA#n/9rA#r(yr8 *yn9m9m#r#n#j&_N^ _XNUndoBS o "oB0/S@m Q _O N o "o0/S@mQ _O N o "o0/S@m Q _O NJf'|` 'yNuNVBn*yf mv@Jg( nb mvt4."BP~RnRv`*yfRv nbr2. AB(~N^Nu/9fNVv#fp N"/ GZA`/ GZND&_Nu /N^ g-kv yb,'P` yb,-PvN.~@rAf& g-kv'|`p`*Bn|r2.|$&.b4 n p0.|,Dp0.|"@)~@fRn|`r2.|$&.b" n p0.|,Dp@fp0.|$@*~@r=AfBnzr2.z$&.bP n|dF|<.| F(~Dp@g(Rn|r2.| A"nx8.z&~Rnz`r2.z$&.b nt4.z"Bp``&_N^#f _NN"N"NV/ G^=||Bn=|=|Bn-n/ n :EH E g&/9j n 4BH B s#j*yjJmc-Jg.JgHmr2- / n 4?N'@Jl$*yjBm +D7@#j``R +*yj4-H"l&Bm n 2?N H'@'|` n 2?N H'@` n 2?N H'@ n 2AH AHs*yj8PDHDBDHD&/NR#j` n 2?N H'@Jl +D7@`Bk&_N^ _\NNV/ G^?./.?. NJkf + n0` n0&_N^ _ NNV/ G^?./.?. NlJkf + n0` n0&_N^ _ NN"N"N"NV/ G^ n e" n2 b2. AH A g`\2. AH AHs6.PCHCBCHC$/NT/9j4. BH B s#j*yj:BmBmB-#j&_N^ _XNG^r-p??7@2+AH A'02R@QNu@:*.*N"Rn*yfRmRnN"N" nRPRnRnN"RnRnRnRnRnRnRnRnRnWn\nWn\nSnNV/ GźHk>/<@tBgRr2.$&. b0. nv6.$>2.3>@t\Bf 0.R@=@Rn`Bnr2.$&. bD nRnRm`N^ _ N/9fNV#f |xdC~"QNR@=@?.Hk>NJ=|>2.3>@tBf=n02S@Q n7c=|7=n=|Hyx/</<N=n2.SA3>@t\Bg0.\>RnHyx/</<N0.B3>0.|AS@@>N^#fNuGźNNu[ ][]Prompt box too big for screen OOPS%AcceptCancel:*.RSCNVpN"pN"/ G6 n//./. N? n//./.N6<C=F=n0.24.Bo`Bn0.$.2An" n<.H*Cp@f 0.`R n6.H$@ n2.nH,Dg`Rn`Rn`n".0R@`&_N^ _NN"N"RkRkRkNVpN"/ G6Bk0+$. 2Ab( n|<+*Cp@gRk`0+`&_N^ _ NNVpN"/ G6Bk0+$.2AbT6+*.8DbD np0+Fp@g& nt4+""nz:+(Rk`7k.Jg>".0+@e&??7@ nt4+" 02R@Q".RA7A0+$.2Ab nt4+"B0+`&_N^ _NNVpN"/ G6 n//./././. /.<N7@&_N^ _NN"NV/ G6 n//./. N67@0. 24+Be`0. n24+Bc0+n =@2+n0. @e:??7@ n4+nHBBBHB""nz:+(02R@Q0+n7@0+$.2Ab nt4+"B&_N^ _NNVp N"/ G60.$.2Ac .=@ n //./.N<7@0.24+Bd Jnf nB`0.n24+Bc0+n=@2.nSA0.@e:??7@ n t4+""n:+nHEBEHE(02R@Q0.$. 2Ab nt4."B&_N^ _NN"N"N"N"RkSkN"N"\:/ _02// /???<NMO,_&_Nu _2// /??<NMO,_&_Nu _2// /??< NMO,_&_Nu _2// /??<NMO,_&_Nu#>#B?<NMO&yB y>N#>#B?<NMO&yB y>N#>#B?<NMO&yB y>N#>#B?<NMO&yB y>N#>#B?<NMO&yB y>N#>#B?<NMO&yB y>N#>#B?< NMO&yB y>N#>#B?< NMO&yB y>N#>#B?<NNO &yB y>N?<NNTNu?<NNTNu?<NNTNu _$_// / ?<&NNO&_Nu#>#B?<NNO &yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?< NNO&yB y>N#>#B?< NNO&yB y>N#>#B?< NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO&yB y>N#>#B?<NNO &yB y>N#>#B?< NNO&yB y>N#>#B?<!NNO&yB y>N#>#B?<"NNO&yB y>N#>#B?<#NNO&yB y>N#>#B?<$NNO&yB y>N#>#B?<%NNO&yB y>NNV/ GF=|2=|=|=|Bn=n/ n4H(*.n* n"."n6H$- n0R@ n0&_N^ _NRRNV7n BkBk7n HnHnHnHnHkNN^ _XNNV/ GZ7|dBk7|  n7P .мZ//./p02@0Nu0/lD@?@ _TN _0@NS@gVf JAgmJ`JNuNu _ am znNH@B@H@Nu>p02@0NuNFQN(NQNNQNNFQN @g,NVf _.IN! R _.IFfSNNfRN Am~>G@l7xARA'drNr _gRNДA _N RAQN Am$~>懾@l??0<`7x02Nup _Hy*NgRACSNuACSNu @lpNu"_.HN PN Am~>懾@l??0<`F7x02Nug @0(` @ ("P$_gR (OgS!Q NO gNz @oJ$//?< NAOHyS?< NAO N:HyZ?< NAO2<0<QQ2 _?<LNA _p HyN/H@N NNu?@N 0NNuN NNu l0NW??<NAONu /lD/@ _XN//Nf"N "ANu//Nz"N*"ANu.HA/HGBGЇ.HGHAHGBGЇNu.HA/HGBGЇ.HGHAHGBGЇNu lD lD`NDNu lD`HA AfHA.B@H@H@HG>HG0NuHAe8B?<eRF`ЁeQ`eQ< SNupNu#~"(gT} g" gDopHy |N "_.@!@/ //?<?<JNAO N"_.@/ Nu o0 @f #NL @f#N8 @f !yN& @f0( WN"y#H3@ iN _ON _ @Nп~n _p HyCN N _> N _> N _ B@H@N _ H@B@H@NNV/ Gǂ=|ZBn=|=|Bn-n -n/<HnHnHnHyHnN nW n0.`&_N^ _NNV/ Gǂ9^Jg.AN`.A0?N&_N^ _TN/ Gǂ< N< N&_NuNVBk2+H$&. o`B n6+H$@xDf` n6+H$NHRk`N^ _ NNVpN"/ Gǂ/./. /.Nt&_N^ _ NN"Gǂp@ Nu vpNvpNvpNvpNvpNvpNvpNvpN~vpNvvp Nnvp Nfvp NjvpNVvpNZvpNRvpNJvpNBvpN.vpN&vp*Nvp+Nvp,Nvp-Nvp/Nvp0Nvp1Nvp6Nvp9Nvp:Nvp;NvpNv p?Nv p@NvpANvpBNvpCNvpENvpFN~vpGNvvpHNnvpINfv pJN^ _6 "$// ////??<KNAO,_&_NuvpLN.v $?//pNNvpONv pVN vpWN(_?NATN(_?NA@TNA" <NB _ONA"psNB _ONA #b <N"<4N6NNN^NtNa>NNxTNPNa NcN>jN^NNNGNBNNhN pAN`\H+ ReaH- ReaW+ ReaW- Rea Rea Rea Rea ReaCleareaFilleaVFlipeaHFlipeaLineeaDataeaMaskeaCopyeaANDeaOReaXOReaCovereaZoomeaCancelaHH $$DD  PROGDEFBOXCHAR TITLE FORM MENU ALERT FrStringFrImageObject bject CONAUXPRN|0123456789ABCDEFnot enough memory to runOut of rangeSet element out of rangestack overflow near  &*   *        .,(    "    . ,    & @4   8>*D  N :  " (F $N "0">*`Z* . , ~ "0"^ 2 F " , *| &t.&&t2 8@P@V "*^D 0 \*   6( B*   b    D"    H$$$$$        8  ,$"8"((" dPJ8*  "  &" > ,     (  ,B6   2$ F    B "      6 6   , $84 ("     $"    $&   *    2  J "*   22(  F *.4  &   &,(  t:<. $ *@   $:    "(XH" D(8pL&44<  8h  ,$          6       6         $   "p((8 V"4vF &8n    ,  (2  *.& (0J" * TB:H*` F    0`  &,  ^: > &r     &    2(F $   bV   < Xb     B6 $   @B ,0 $ *  . .   0< * "&  " @ 4, (6@  ,   @.&F,   J$ $"  "  @"        "    &$V(*2 ,( . @ $**"".    T""6$(&  ""   .*0$6 " xX""lN$".$ 2 $$42DD $ $& & 8 $$" x  L *,< 8 &  2 "&0     R  :* 4   &Z&R &&&   F F * > 6 * 8 <$ ,$  $B   " 8(Fd8 . :        0(   Z ~& ,2 : `.&       &&B    B 6 <@v&6 P~*       , *l  (""" " $*n ^* " 2 ,           *00 *$$0:   v* LL. &$00  *$00   ($00    , 4"H&0D " "N  (*  * B " F <*  6  L 6   0  @L  <*   l8  0@2.  $ NZ$ 8 $p6(.F$$ ,0  2, . ": 8     <  6 B X<>B$$$v<|  2"  *"*FhBX.*,& @D"",<* .0b >~Z8  $  X@d@$"(86  .  , 2* &   V   $ , 0 T " >  V$ *  8(,,F6 < * 4 22L, F$$x28,F(@$H$$: .J> VB PF* N HHJ* $N>   $ "*"4 nh,6""@0(F4*.  &n .$*$J< "("Z$ 800 H& 4$  b& B. *z X v8F$ H$0 &     <& z 8   64T X.$  .R& ,F $v,VL8 6HB R8 D*2J$ lD.j\: >: p "@ "2 :<""B682 2>**>:@*$ L 2d 22 B: 2 F. 6 2 VL ( 2R "R ": : @ BX " $: F @8 Dxh : 4( T8    *z@ F F F  "2 F : @ : X "L ": 2@ 2  2 ".j.H( `> 4$ | >OM@Mk MՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠX:MՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMU M@NN>VMMM L L L L LMM  >OM@Mk MՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠM#C*ՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMՠMMU M@NN>VMMM L L L L LMM