Small-C tcpp $tccom $tcc $swext/s$swcrt $stdio/h$start/s$srload $sh $rm $Read/meToptab $mnemtab$mkdfs $mkall $Manual Tlocal/h$loadsh $ld $InstallText/s $Errors Tenter/s$ctype/h$crt $as65 $Appdx_3TAppdx_2TAppdx_1T!boot $ đ2mĒMÎSųJ ėC˙@í MâCũ h…, ĩ@˙ ˛íŗA˙RgÍą C ͯMŧ0w0M~úzC˙03ÍFAũ Ø CA˙ ā BC˙0ÂÍ@C˙€\M=C˙Āé8cŒŲM˙ĀŦL ŒÍC˙û„ĖĖZÆC˙ĀwõĖĀA˙0]ë ˇA˙  ŗA˙Rl˞A˙ˇLąCũĐ*ˆ*ˆ`-XC˙ĀéŒ ŒJC˙Āé 'Œ"C˙ĀéJŒC˙ƒ!L*| See Install for instructions. *| See Install for instructions. Small-C System Library Functions -------------------------------- BBC MOS Interface ----------------- Release 0.7 ----------- A.J.Travis 01-May-89 -------------------- Documentation: J.G.Harston 01-Jul-90 ------------------------------------ -------------------------------------------------------------------------- NAME exit SYNOPSIS exit(status) int status; /* exit value */ DESCRIPTION Exits from user program. The exit status is passed to osbyte 1. -------------------------------------------------------------------------- NAME open SYNOPSIS FILE *open(name, rwmode) char *name; /* filename */ int rwmode; /* mode of opening */ DESCRIPTION Attempts to open the named file using osfind, first checking that it exists. The method of opening is controlled by rwmode: rwmode = 0 /* open for input */ rwmode = 1 /* open for output (deletes old file) */ rwmode = 2 /* open for input and output */ Returns -1 if the file doesn't exist, otherwise the file descriptor is returned. -------------------------------------------------------------------------- NAME creat SYNOPSIS FILE *creat(name, pmode) char *name; /* filename */ int pmode; /* ignored in v0.70 */ DESCRIPTION Attempts to create a file for output using osfind &C0, and returns the file decriptor, or -1 if the attempt was unsuccessful. -------------------------------------------------------------------------- NAME close SYNOPSIS close(fd) FILE *fd; /* file decriptor */ DESCRIPTION Closes the file pointed to by fd using osfind 0. -------------------------------------------------------------------------- NAME unlink SYNOPSIS unlink(name) char *name; /* filename */ DESCRIPTION Deletes the named file using osfile 6. -------------------------------------------------------------------------- NAME stat SYNOPSIS int stat(name, fcb) char *name; /* filename */ int *fcb; /* file control block */ DESCRIPTION Uses osfile 5 to get information on the named file. Returns -1 if no file exists, and 0 if one does. The file control block is filled with the following data: fcb[0] & 0xFF file type: 1=file, 2=directory, 255=run only fcb[1] load address low 2 bytes fcb[2] load address high 2 bytes fcb[3] execute address low 2 bytes fcb[4] execute address high 2 bytes fcb[5] length low 2 bytes fcb[6] length high 2 bytes fcb[7] & 0xFF access byte fcb[7] & 0x1F00 day of month file created fcb[7] & 0xE000 (year-1981) bits 6 to 4 fcb[8] & 0x0F month file created fcb[8] & 0xF0 (year-1981) bits 3 to 0 fcb[8] & 0xFF00 undefined -------------------------------------------------------------------------- NAME system SYNOPSIS int system(string) char *string; /* command string */ DESCRIPTION Passes a string to the system oscli routine. The return value in osbyte 1 is returned. NOTE This doesn't spawn a subprocess, just passes on control. If the command is a language initialisation or a Small-C program, there won't be a return. Also, be careful with the *compact and *backup commands as they use the main memory as workspace, and will so write over the executing program, if it is not a ROM-based one. -------------------------------------------------------------------------- NAME read SYNOPSIS int read(fd, buf, count) FILE *fd; /* file descriptor */ char *buf; /* address of buffer */ int count; /* number of bytes to read */ DESCRIPTION Reads in data into memory pointed to by buf, using osgbpb 4. Before transfering anything, tests the status of the file, and returns 0 if it is at EOF. Otherwise, it returns the number of bytes actually transfered. If this is less than the number requested, then the end of the file has been hit. The data is read from the current PTR value. NOTES Version 0.7 does not have the ability to read from stdin with this call. -------------------------------------------------------------------------- NAME write SYNOPSIS int write(fd, buf, count) FILE *fd; /* file descriptor */ char *buf; /* address of buffer */ int count; /* number of bytes to write */ DESCRIPTION Writes data out from memory pointed to by buf, using osgbpb 2, or to the standard output or error output. Returns the number of bytes transfered. NOTES If writing to stdout or stderr, then '\n' is converted to "\r\n". This can cause problems when sending a "\n\r" sequence to a file which gets converted to "\r\n\r", but has no visual effect. Returns the number of bytes transfered. -------------------------------------------------------------------------- NAME getc SYNOPSIS int getc(fd) FILE *fd; /* file descriptor */ DESCRIPTION Reads a byte from the file, or stdin, returning -1 if EOF occured. NOTES Version 0.7 sign extends the character received. This makes character 255 into -1, exactly the same as EOF. When reading from stdin, the characters are echoed to the screen. -------------------------------------------------------------------------- NAME putc SYNOPSIS putc(c, fd) char c; /* character */ FILE *fd; /* file descriptor */ DESCRIPTION Writes a character out to a file or the standard output or error output. NOTES When writing to stdout or stderr, '\n' is converted to "\r\n". This means that a "\n\r" sequence becomes "\r\n\r". -------------------------------------------------------------------------- NAME vdu SYNOPSIS vdu(c) char c; /* character */ DESCRIPTION Sends a character to the oswrch vdu output. The character is sent 'pure', no modifications are performed on it as with putc(). -------------------------------------------------------------------------- NAME osbyte SYNOPSIS int osbyte(type, XYparam) int type; /* A register parameter */ int XYparam; /* X and Y register parameter */ DESCRIPTION Calls osbyte with A=type, X=XYparam mod 256, Y=XYparam div 256. Returns X+256*Y, ie the value held in XY. NOTES It is not osbyte(A,X,Y). It is osbyte(A,X+Y*256) with only two parameters. -------------------------------------------------------------------------- NAME osword SYNOPSIS osword(type, address) int type; /* A register parameter */ int *address; /* integer parameter block */ or char *address; /* character parameter block */ DESCRIPTION Calls osword with A=type, X=address mod 256, Y=address div 256, ie XY points to the parameter block. NOTES Can return XY after the call, but this is usually the same as the calling value, except with osword 0 - read a line. In general, you should not rely on XY values returned from osword calls. When working on the second processor, the Tube OS only transfers enough of the parameter block that it thinks will be suffient. Bear this in mind when writing and/or using extra osword calls. The lengths are: osword 0 Special case - read a line. oswords 1 to 20 Varying, enough for the standard osword calls and the NFS osword primitives. However, some systems don't allow enough for osword 14 - read real time clock, reading only 16 bytes instead of 25. oswords 21 to 127 16 bytes. oswords 128 to 255 Determined by parameter entries. XY+0 holds the 'send' block length and XY+1 holds the 'receive' block length. -------------------------------------------------------------------------- NAME osfile SYNOPSIS int osfile(name, fcb, type) char *name; /* filename */ int *fcb; /* file control block */ int type; /* osfile command */ DESCRIPTION Calls osfile with A=type and XY=fcb. Returns the same value as stat(). stat(name, fcb) is the same as osfile(name, fcb, 5). -------------------------------------------------------------------------- Small-C System Library Functions -------------------------------- BBC MOS Interface ----------------- Release 0.7 ----------- Small-C Standard Library Functions ---------------------------------- Release 0.7 ----------- A.J.Travis 01-May-89 -------------------- Documentation: J.G.Harston 01-Jul-90 ------------------------------------ Standard functions. Contained in lib/c -------------------------------------------------------------------------- NAME strcat SYNOPSIS char *strcat(s1, s2) char *s1; char *s2; DESCRIPTION Appends string s2 onto the end of string s1. No checks are made for the resulting string being too long for it's memory, so make sure you reserve enough room. Returns the concatenated string s1. -------------------------------------------------------------------------- NAME strcmp SYNOPSIS int strcmp(s1, s2) char *s1; char *s2; DESCRIPTION Compares string s1 and s2. Returns a positive number if s1 > s2, a negative number if s1 < s2 and zero if s1 == s2. -------------------------------------------------------------------------- NAME strcpy SYNOPSIS char *strcpy(s1, s2) char *s1; char *s2; DESCRIPTION Copies string s2 into string s1, and returns the string s1. -------------------------------------------------------------------------- NAME strlen SYNOPSIS int strlen(s) char *s; DESCRIPTION Returns the length of the string s. -------------------------------------------------------------------------- NAME strncat SYNOPSIS char *strncat(s1, s2, n) char *s1; char *s2; int n; DESCRIPTION Appends n characters from s2 onto the end of string s1. If the length of string s2 is less than n, then only those characters will be appended. Returns the concatenated string s1. -------------------------------------------------------------------------- NAME strncmp SYNOPSIS int strncmp(s1, s2, n) char *s1; char *s2; int n; DESCRIPTION Compares the first n characters of strings s1 and s2. Returns a negative number if s1 < s2, a positive number if s2 < s1 and zero if they are the same. -------------------------------------------------------------------------- NAME strncpy SYNOPSIS strncpy(s1, s2, n) char *s1; char *s2; int n; DESCRIPTION Copies n characters from s2 into s1. If s2 has less than n characters, then the rest of s1 is filled with nulls, effectively making a s1 a string of strlen(s2) length. If s2 has more than n characters, then only the first n characters are copied, making s1 a string of n length. --------------------------------------------------------------------------- NAME fclose SYNOPSIS fclose(fp) FILE *fp; /* (pseudo) i/o stream pointer */ DESCRIPTION Closes the file pointed to by fp. -------------------------------------------------------------------------- NAME fopen SYNOPSIS FILE *fopen(name, mode) char *name; char *mode; DESCRIPTION Attempts to open a file. If mode is "w", the file is first deleted, if it exists, then opened for writing. If mode is "r", the file is opened for reading. If the file could not be opened, then NULL is returned. Otherwise, the file descriptor is returned. -------------------------------------------------------------------------- NAME fgets SYNOPSIS char *fgets(s, n, fp) char *s; int n; /* maximum number of characters */ FILE *fp; DESCRIPTION Reads in characters from the file pointed to by fp, up to a maximum of n into the string s. Entry is terminated by either a '\n' character, a '\r' character or n characters being read in. DELETE (character 127) deletes the previous character, if not at the begining of the string. Returns the read string, or NULL if EOF was encountered before anything else. NOTES With version 0.7, DELETE does not decrease the count of characters read in, so if 10 characters are asked for, and five characters are entered, then five DELETE characters, the function terminates. Also, when the routine terminates on overflow, the end marker is a bit dodgy. -------------------------------------------------------------------------- NAME fputs SYNOPSIS fputs(s, fp) char *s; FILE *fp; DESCRIPTION Outputs the string s to the file pointed to by fp. If the output is to stdout or stdout, then any '\n' characters are converted to '\r' characters. -------------------------------------------------------------------------- NAME gets SYNOPSIS char *gets(s) char *s; DESCRIPTION Reads in a string from stdin into the string s. Input is terminated by either a NULL (character 0) or a '\n' (character 10). No length checking is done, so make sure that s has enough space researved for it for the longest string that you expect. -------------------------------------------------------------------------- NAME puts SYNOPSIS puts(s) char *s; DESCRIPTION Puts the string s out to stdout, followed by a '\n'. -------------------------------------------------------------------------- NAME printf SYNOPSIS printf(fmt, arg) char *fmt; /* output format */ int arg; /* argument list */ DESCRIPTION Sends output to stdout by calling fprintf. See below. -------------------------------------------------------------------------- NAME fprintf SYNOPSIS fprintf(fp, fmt, arg) FILE *fp; /* output stream */ char *fmt; /* output format */ int arg; /* argument list */ DESCRIPTION Sends output to a file. See _doprint(). -------------------------------------------------------------------------- NAME sprintf SYNOPSIS char *sprintf(s, fmt, arg) char *s; /* output string */ char *fmt; /* output format */ int arg; /* argument list */ DESCRIPTION Writes output into a string. Returns the output string. See _doprint(). -------------------------------------------------------------------------- NAME _doprint SYNOPSIS _doprint(buf, fmt, arg) char *buf; /* output buffer */ char *fmt; /* output format */ int *arg[]; /* argument list */ DESCRIPTION The internal function called by the printf functions. The character exceptions recognised are: %d print decimal %x print lower case hex %X print upper case hex %d, %x and %X can be padded with n counts of character c using %ncx, for example, %02x. %s print string %c print character \n newline character (10) \r return character (13) \t tab character (9) \0 null character (0) \0nnn character 0nnn (where 0nnn is an octal number) NOTES For more detailed descriptions of the printf functions, see a good C reference book (eg Kernighan & Ritchie). -------------------------------------------------------------------------- NAME itoa SYNOPSIS int itoa(n, s, base) unsigned n; /* input value */ char *s; /* output buffer */ int base; /* conversion base */ DESCRIPTION Converts the supplied number to a string in s, using the supplied conversion base. The function returns the number of digits in the converted string. -------------------------------------------------------------------------- NAME scanf SYNOPSIS scanf(fmt, arg) char *fmt; int arg; DESCRIPTION Reads input from stdin by calling fscanf(). See _doscan() below. -------------------------------------------------------------------------- NAME fscanf SYNOPSIS fscanf(fp, fmt, arg) FILE *fp; char *fmt; int arg; DESCRIPTION Reads input from a file. See _doscan() below. -------------------------------------------------------------------------- NAME sscanf SYNOPSIS sscanf(s, fmt, arg) char *s; char *fmt; int arg; DESCRIPTION Reads input in from a supplied string. See _doscan() below. -------------------------------------------------------------------------- NAME _doscan SYNOPSIS _doscan(fp, buf, fmt, arg) FILE *fp; /* input stream */ char *buf; /* i/o buffer */ char *fmt; /* conversion format */ int *arg[]; /* argument list */ DESCRIPTION The internal function called by the scanf functions. The character exceptions recognised are: %d read a decimal number %x read a hex number %c read a character %s read a string NOTES For a more detailed description of the scanf functions, see a good C reference book, (eg Kernighan & Ritchie). -------------------------------------------------------------------------- NAME atoi SYNOPSIS int atoi(s) char *s; /* The string to convert */ DESCRIPTION Converts the string s into an integer. Converts in decimal, unless the string starts with 0x (eg 0xff20) where hexadecimal is used, ignoring the case of any letters, or 0 (eg 0377) where octal is used. This means than decimal numbers should not have any preceding zeros. -------------------------------------------------------------------------- NAME _cmdinit SYNOPSIS _cmdinit(enter) unsigned enter; /* entry point (should be int *()) */ DESCRIPTION Extracts the command line arguments from the invocation text and stores them in memory. The routine then calls the enter entry point with argc and argv as parameters. The entry point is usually main(). NOTES Because of a bug in the compiler, the array of string pointers (char *argv[];) is treated as an array of integers (int argv[];). This means that each offset contains two characters. This is not a problem if you just compare the strings to other strings, but if you want to check an individual character, like the '-' preceding command options, you need to mask out the top with if ((argv[n] & 0xff) == '-') Where this occurs in the source programs it is marked /* BUG in compiler */ -------------------------------------------------------------------------- Standard C functions contained in sys/s: NAME isupper, etc. SYNOPSIS -------------------------------------------------------------------------- NAME toupper, tolower, toascii SYNOPSIS char toupper(c); char c; char tolower(c); char c; char toascii(c); char c; DESCRIPTION Standard C functions, normally defined as macros, but this implementation defines them as built-in functions for speed and compactness. -------------------------------------------------------------------------- Small-C Standard Library Functions ---------------------------------- Release 0.7 ----------- A.J.Travis 01-May-89 -------------------- Documentation: J.G.Harston 01-Jul-90 ---------------------- Hints, Tips and Notes ===================== Changing Mode ------------- You normally can't change mode during a program, as the data stack is put at the top of user memory, just underneath the screen. However, if you change mode to a mode that uses the same amount of memory, or less, then the data stack will not be overwritten. The definition of mode() below does just that, using osbytes 130, 132 and 133 to check the memory configuation. The if statement is read as: if not on the tube and Himem for the new mode is less then current Himem Subtracting is used instead of directly comparing because integers are 16-bit, so the 0x8000 returned by a shadow screen will be treated as a very large negative number which would always be smaller then the current Himem. mode(a) int a; /* mode */ { if (osbyte(130,0) < 0 & osbyte(133,a | 0x80)-osbyte(132,0)<0) { printf("Restart in mode %d.\n",a); exit(1); /* No memory, so stop */ } vdu(22); vdu(a | 0x80); } Returning from main() --------------------- Using return() to return a result from main() does not work correctly. main() should therefore finish with exit(0); Escape ------ The Escape function works in the Small-C programs by trapping the event vector and responding to event 6, the escape event, and generating an 'escape' error. This means that you can press escape in the middle of something, like a disk access, and not allow it to tidy up before leaving. With 'escape sensitive' parts of a program, you could use osbyte(13,6) to disable escape and osbyte(14,6) to re-enable escape to ensure that the escape is only responded to when it is safe to do so. Another side effect from using the escape event is that if you enter another language from the shell, eg Basic, then press escape, the escape event tries to execute. However, the shell rom has been paged out, and so you get a garbage error message. To avoid this, prefix commands to exit the shell with '*', which will disable the escape event until the shell is re-entered. Implementation --------------------- Integer size: 16 bits (2 bytes) Maximum symbol length: 7 characters (ie nameone and nameone2 are the same) Compatibility ------------- I have successfully tested Small-C on BBCs and Masters and on DFS, ADFS and NFS. Some early versions of HADFS doesn't like the OPENUP/CLOSE/ DELETE/OPENOUT sequence that tcc uses to create a new output file. I may change tcc to use the sequence STAT/DELETE/OPENOUT instead. Changes History --------------- v0.72 23-Jun-2005 J.G.Harston: String buffer used by printf() and scanf() functions increased to 256 bytes. v0.71 25-Jul-1991 J.G.Harston: Version 0.70 had problems operating in shadow screen modes due to the destination of a loop within the shell being one byte out. ~restart is pushed onto the machine stack instead of ~restart-1. The programmer forgot that the 6502 increments the machine return address pulled with RTS before continuing, so this caused an osbyte call to be made without the registers being set up. The source code for v0.71 has been fixed to prevent this, and the distributed shell corrected. The v0.70 shell can be patched by changing the byte in the file "sh" at offset &26B from &5B to &5A or, preferably, to &19 to ensure escape checking is re-enabled. Uses '/' as the filename seperator instead of '_'. This is consistant with the treatment of file extensions by all other Acorn systems. Hints, Tips and Notes ===================== Changing Mode ------------- You normally can't change modŠüĸ ˙ ô˙†ôŽ0ūĸ  ˆƒLVĒŠ ]ƒĸ ŽTsŒUsĸ ŽVsŒWsĸ_ CŽ:qŒ;qĸ ŽZsŒ[s ŧ‚ ƒ ˆƒĸ  რ„ ƒ ƒ ˆƒĸ˙  Q… ˆƒĸ-   …ĐLzĸe C ˆƒ Á‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐLÃŽZsŦ[s %ƒŽZsŒ[s 4ƒLVĸh C ˆƒ Á‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐLS ˇ‚ ƒ ˆƒĸ  ۅĐL —LP ŧ‚ ƒ ˆƒĸ  რ„ ƒŽ:qŒ;q ˇ‚ ˆƒ ƒ 4ƒ é‚ ŧ‚ ˆƒ ƒ *ƒ é‚ ;ƒLV — ˇ‚ ˆƒ ƒ 4ƒ é‚ ŧ‚ ˆƒ ƒ *ƒ é‚ ;ƒLG ˇ‚ ƒ ˆƒĸ  ۅĐL’ —ĸk C ˆƒŽ:qŦ;q ˆƒ ׍ ¸ƒŽVsŒWs ˆƒĸ   …ĐLęŽ:qŦ;q ˆƒĸm C ˆƒĸ  ˆƒ `’ ĩƒĸ  ‹… ˆƒ ˆ= ģƒĸ* J ˆƒĸ ' „Ž D ˆƒ ׍ ¸ƒ é‚ ˆƒĸ   …ĐLK ˛‚ ˆƒĸF D ˆƒĸH D ˆƒ ׍ ¸ƒ é‚ ˆƒĸ   …ĐLK ĸP D ˆƒĸ  ˆƒ `’ ¸ƒĸ  ‹… ˆƒ ˆ= ģƒ ŧ‚ ˆƒĸ  é‚ ŧ‚ ƒ ˆƒĸ8  ۅĐL! ˛‚ ƒ ˆƒĸP  ˆƒ ˂ ˆƒ ŽŽ ĩƒĸV Ō‚ ˆƒ Ƃ é‚ĸV Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ ˆƒĸ   Ģ…ĐLĀ L— ĸV Ō‚ ˆƒ ƒ 4ƒ é‚ ˆƒĸ  Ū‚ĸ˛ F ˆƒ Á‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ   0„ „ ˆƒ Ƃ ˆƒ Š> ¸ƒLX ˛‚ ƒ ˆƒ Į ģƒ ˇ‚ ˆƒĸ  ˆƒĸj D ˆƒ x† ¸ƒ é‚ ˆƒĸ  ‹…  …ĐL”! ˇ‚ ˆƒĸ  ˆƒĸp D ˆƒ x† ¸ƒ é‚ ˆƒĸ  ‹…  …ĐL”!ĸv D ˆƒĸ  ˆƒ `’ ¸ƒ ˇ‚ ƒ ˆƒĸ  ‹… Ģ…ĐLt"ĸV Ō‚ ˆƒĸ˛ F é‚ ŧ‚ ˆƒĸ  ˆƒĸZ Ō‚ ƒ ˆƒ Ƃ ƒ ˆƒ '‡ ĩƒ é‚ ˆƒĸ  Ģ…ĐL"ĸV Ō‚ ˆƒĸX Ō‚ ƒ ˆƒ Ƃ ƒ „ é‚Lģ!ĸV Ō‚ ƒ ˆƒĸ˛ F „ ˆƒĸ8  ˆƒĸ   0„ $†ĐLe"ĸŽ D ˆƒĸ  ˆƒ `’ ¸ƒĸ  ‹… ˆƒ ˆ= ģƒ ˇ‚ ƒ ˆƒ Æ ģƒŽ@qŦAqŽ>qŒ?qŠX Eƒ`Ž\sŦ]s ˆƒĸ   …ĐLŸ" Ŗ"` ^#`Š ]ƒ ˛‚ ˆƒĸÚ I ˆƒ ī? ģƒ é‚ ˆƒĸ   …ĐL#ĸ=  ˆƒ ^; ģƒ ™…ĐLũ" 3 ˆƒĸÚ I ˆƒ Š> ¸ƒĸ  ģƒ`ŽDqŦEq ˆƒĸÚ I ˆƒ Š> ¸ƒĸ  ģƒ` ˛‚ ƒ ˆƒŽ>qŦ?q $†ĐLI# ˛‚ ƒ ˆƒ ‘$ ģƒĸ  ģƒ`ĸ¨ D ˆƒ "= ģƒĸ  ģƒ`Š ]ƒ ˛‚ ˆƒĸÚ I ˆƒ ī? ģƒ é‚ ˆƒŽ>qŦ?q †ĐLđ#ĸ=  ˆƒ ^; ģƒ ™…ĐLÆ# 3 ˆƒ ˇ‚ ƒ ˆƒĸ  „ ˆƒ @ ¸ƒĸ  ģƒ`ŽDqŦEq ˆƒ ˇ‚ ƒ ˆƒĸ  „ ˆƒ @ ¸ƒĸ  ģƒ` ˛‚ ƒ ˆƒ ‘$ ģƒĸ  ģƒ`Š ]ƒ ˛‚ ˆƒŽBqŦCq é‚ĸÚ I ˆƒ û9 ģƒ ˆƒĸ   …ĐL?$ĸ  ¸ƒ` ˇ‚ ˆƒĸÚ I ˆƒ ī? ģƒ é‚ ˆƒŽ>qŦ?q $†ĐL}$ ˇ‚ ƒ ˆƒ ‘$ ģƒĸ  ¸ƒ` ˛‚ ƒŽBqŒCqĸ  ¸ƒ`Š ]ƒ ˇ‚ ˆƒ Á‚ ƒ ˆƒĸ  „ ˆƒ Ŗ@ ģƒ é‚ĸb F ˆƒĸ  „ ˆƒ ŧ‚ ƒ ˆƒĸ  „ ú‚ Ū‚ ˆƒĸ  ‹… Ģ…ĐL˙$ĸ Ž^sŒ_s ¸ƒ`ĸb F ˆƒĸ  „ ˆƒ ŧ‚ ƒ ˆƒĸ   „ ú‚ Ū‚ ˆƒĸ  ‹… Ģ…ĐL?% , ¸ƒ` ˛‚ ˆƒ Ø% é‚ĸb F ˆƒĸ  „ ˆƒ ŧ‚ ƒ ˆƒ ŧ‚ ƒ „ ú‚ Ū‚ ˆƒĸ  ‹… Ģ…ĐLŠ% ¸ƒ` ˛‚ ƒ ˆƒ ŧ‚ ƒ ˆƒ ë& ¸ƒ ™…ĐLŽ% ¸ƒ`Ž\sŦ]s ˆƒĸ   …ĐLĮ% ¸ƒ`ĸ¸ D ˆƒ "= ģƒ ¸ƒ`Š ]ƒĸ#  ˆƒ ^; ģƒ ™…ĐLų% *( ģƒ`ĸ(  ˆƒ ^; ģƒ ™…ĐL& Z( ģƒ`ŽBqŦCq ú‚ ˆƒĸa   … ˆƒŽBqŦCq ˆƒĸ  „ ú‚ ˆƒ îˆ ģƒ ˆƒĸ   … Q… ™…ĐLc& /* ģƒ` ˛‚ ˆƒ 3 é‚ĸ,  ˆƒ ^; ģƒ ™…ĐL—& ˛‚ ƒ ˆƒ >* ģƒ ģƒ` ˛‚ ƒ ˆƒĸ  Ѕ ˆƒ ˇ‚ ƒ ˆƒĸ  ۅ Q… ™…ĐLØ& ˛‚ ƒ ˆƒ , ģƒ ģƒ` ˛‚ ƒ ˆƒ 9, ģƒ ģƒ` ˇ‚ ƒ ˆƒĸ   …ĐL' ˛‚ ƒ ˆƒ :' ģƒ` ˇ‚ ƒ ˆƒĸ   …ĐL5' ˛‚ ƒ ˆƒ ˛' ģƒ`ĸ ` ˛‚ ƒ ˆƒĸ  „ ú‚ ˆƒĸ  ‹…  …ĐLd'ĸ `ĸ Ž^sŒ_sĸb F ˆƒĸ  „ ˆƒ ˇ‚ ƒ ˆƒĸ  „ ú‚ Ū‚ĸb F ˆƒĸ  „ ˆƒĸ  Ū‚ĸ ` ˛‚ ƒ ˆƒĸ  „ ú‚ ˆƒĸ  ‹…  …ĐLÜ'ĸ `ĸ Ž^sŒ_sĸb F ˆƒĸ  „ ˆƒ ˇ‚ ƒ ˆƒĸ  „ ú‚ Ū‚ĸb F ˆƒĸ  „ ˆƒĸ  Ū‚ĸ `ĸ Ž^sŒ_sĸb F ˆƒĸ  „ ˆƒ 3 ˆƒĸ˙  Q… Ū‚ĸ `Š ]ƒĸ Ž^sŒ_s ˛‚ ˆƒ 3 é‚ĸ,  ˆƒ ^; ģƒ ™…ĐL( ˛‚ ƒ ˆƒ Ö( ģƒ ģƒ`ĸ)  ˆƒ ^; ģƒ ™…ĐLÅ( ˛‚ ƒ ˆƒ W) ģƒ ģƒ`ĸÍ D ˆƒ "= ģƒ ģƒ`ĸx  ˆƒ ^; ģƒ ˆƒĸ   …ĐL)ĸÚ D ˆƒ "= ģƒLW)ĸ)  ˆƒ ^; ģƒ ˆƒĸ   …ĐL.)ĸį D ˆƒ "= ģƒLW)ĸb F ˆƒĸ  „ ˆƒ ˇ‚ ƒ ˆƒĸ˙  Q… Ū‚ĸ  `ĸ,  ˆƒ ^; ģƒ ˆƒĸ   …ĐLƒ) ˛‚ ƒ ˆƒ Ø) ģƒ`ĸy  ˆƒ ^; ģƒ ˆƒĸ   …ĐL¯)ĸô D ˆƒ "= ģƒLØ)ĸb F ˆƒĸ  „ ˆƒ ˇ‚ ƒ ˆƒĸ˙  Q… Ū‚ĸ  `ĸ Ž^sŒ_sĸb F ˆƒĸ  „ ˆƒ ˇ‚ ƒ ˆƒĸ˙  Q… Ū‚ĸb F ˆƒĸ  „ ˆƒ ˇ‚ ƒ ˆƒĸ  ]… Ū‚ĸ  `ĸ Ž^sŒ_sĸ `ĸx  ˆƒ ^; ģƒ ™…ĐLc* ˛‚ ƒ ˆƒ –* ģƒ`ĸy  ˆƒ ^; ģƒ ™…ĐLˆ* ˛‚ ƒ ˆƒ N+ ģƒ`ĸ E ˆƒ "= ģƒ` ˛‚ ƒ ˆƒĸ  ļ… ˆƒ ˇ‚ ƒ ˆƒĸ  ۅ Q… ™…ĐL÷*ĸ Ž^sŒ_sĸb F ˆƒĸ  „ ˆƒ ˇ‚ ƒ ˆƒĸ˙  Q… Ū‚ĸ `ĸ Ž^sŒ_sĸb F ˆƒĸ  „ ˆƒ ˇ‚ ƒ ˆƒĸ˙  Q… Ū‚ĸb F ˆƒĸ  „ ˆƒ ˇ‚ ƒ ˆƒĸ  ]… Ū‚ĸ ` ˛‚ ƒ ˆƒĸ  ļ… ˆƒ ˇ‚ ƒ ˆƒĸ  ۅ Q… ™…ĐL¯+ĸ Ž^sŒ_sĸb F ˆƒĸ  „ ˆƒ ˇ‚ ƒ ˆƒĸ˙  Q… Ū‚ĸ `ĸ Ž^sŒ_sĸb F ˆƒĸ  „ ˆƒ ˇ‚ ƒ ˆƒĸ˙  Q… Ū‚ĸb F ˆƒĸ  „ ˆƒ ˇ‚ ƒ ˆƒĸ  ]… Ū‚ĸ `ĸ Ž^sŒ_sĸb F ˆƒĸ  „ ˆƒ ˇ‚ ƒ ˆƒĸ˙  Q… Ū‚ĸ `ĸ Ž^sŒ_sĸb F ˆƒĸ  „ ˆƒ ˇ‚ ƒ ˆƒĸ˙  Q… Ū‚ĸb F ˆƒĸ  „ ˆƒ ˇ‚ ƒ ˆƒĸ  ]… Ū‚ĸ `Š ]ƒĸ Ž^sŒ_s ˛‚ ˆƒ 3 ˆƒŽDqŦEq „ ˆƒĸ  „ é‚ ˛‚ ƒ ˆƒĸ€  ‹… ۅ ˆƒ ˇ‚ ƒ ˆƒĸ  ļ… 9… ™…ĐL$-Ž\sŦ]s ˆƒĸ   …ĐL- ˛‚ ˆƒĸ  é‚L$-ĸ E ˆƒ "= ģƒĸb F ˆƒĸ  „ ˆƒ ˇ‚ ƒ Ū‚ĸ   ģƒ`ĸ=  ˆƒ ^; ģƒ ˆƒĸ   …ĐLr-ĸ) E ˆƒ "= ģƒLÉ- ;ŽBqŦCq ú‚ ˆƒĸ*   …ĐL“- Ę-LÉ- 3ŽDqŒEqŽbsŦcs %ƒŽbsŒcs 4ƒ ˆƒĸ   …ĐLÉ-ŽDqŦEqŽFqŒGq`Š ]ƒ ˛‚ ˆƒŽDqŦEq é‚ 3ŽDqŒEqŽ\sŦ]s ˆƒĸ   …ĐL8. ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒŽDqŦEq $†ĐL8.ŽVsŦWs ˆƒĸ  ˆƒ æ‡ ¸ƒLü- ģƒ`ĸ Ž^sŒ_sĸÚ I ˆƒ û9 ģƒ ˆƒĸ   …ĐLr.ĸ6 E ˆƒ "= ģƒL|/ĸI E ˆƒĸÚ I ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐL›. }/L|/ĸN E ˆƒĸÚ I ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐLÄ. î/L|/ĸT E ˆƒĸÚ I ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐLô.ĸ ŽXsŒYsL|/ĸX E ˆƒĸÚ I ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐL/ ¨0L|/ĸ] E ˆƒĸÚ I ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐLF/ b1L|/ĸb E ˆƒĸÚ I ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐLo/ 02L|/ĸg E ˆƒ "= ģƒ`ĸ Ž^sŒ_sŽ^sŦ_s ˆƒĸP  ۅĐLí/ĸb F ˆƒŽ^sŦ_s %ƒŽ^sŒ_s 4ƒ „ ˆƒ 3 ˆƒĸ˙  Q… Ū‚ĸ,  ˆƒ ^; ģƒ ˆƒĸ   …ĐLę/Lí/L‡/`Š ]ƒĸ Ž^sŒ_s ˛‚ ˆƒ 3 邮^sŦ_s ˆƒĸP  ۅĐL¤0ĸb F ˆƒŽ^sŦ_s %ƒŽ^sŒ_s 4ƒ „ ˆƒ ˇ‚ ƒ ˆƒĸ  ]… Ū‚ĸb F ˆƒŽ^sŦ_s %ƒŽ^sŒ_s 4ƒ „ ˆƒ ˇ‚ ƒ ˆƒĸ˙  Q… Ū‚ĸ,  ˆƒ ^; ģƒ ˆƒĸ   …ĐLĄ0L¤0L 0 ģƒ`Š ]ƒĸ Ž^sŒ_s ˛‚ ˆƒ 3 邮^sŦ_s ˆƒĸP  ۅĐL^1ĸb F ˆƒŽ^sŦ_s %ƒŽ^sŒ_s 4ƒ „ ˆƒ ˇ‚ ƒ ˆƒĸ˙  Q… Ū‚ĸb F ˆƒŽ^sŦ_s %ƒŽ^sŒ_s 4ƒ „ ˆƒ ˇ‚ ƒ ˆƒĸ  ]… Ū‚ĸ,  ˆƒ ^; ģƒ ˆƒĸ   …ĐL[1L^1LÃ0 ģƒ`Š ]ƒ ; ˛‚ ˆƒŽBqŦCq %ƒŽBqŒCq 4ƒ ú‚ Ū‚ĸ Ž^sŒ_sŽ^sŦ_s ˆƒĸP  ۅ ˆƒŽBqŦCq ú‚ ˆƒ ŧ‚ ú‚ Ģ… Q… ˆƒŽBqŦCq ú‚ ˆƒĸ   Ģ… Q… ™…ĐL2ĸb F ˆƒŽ^sŦ_s %ƒŽ^sŒ_s 4ƒ „ ˆƒŽBqŦCq %ƒŽBqŒCq 4ƒ ú‚ Ū‚L’1ŽBqŦCq %ƒŽBqŒCq 4ƒŠ Eƒ`Š ]ƒŽTsŦUs ˆƒ Į ģƒ ; ˛‚ ˆƒĸÚ I 邮BqŦCq ú‚ ˆƒĸ   Ģ… ˆƒŽBqŦCq ú‚ ˆƒĸ   Ģ… Q… ™…ĐL¸2 ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒŽBqŦCq %ƒŽBqŒCq 4ƒ ú‚ Ū‚LT2 ˛‚ ƒ ˆƒĸ  Ū‚ĸy E ˆƒĸÚ I ˆƒ ׍ ¸ƒŽTsŒUs ˆƒĸ   …ĐL3ĸÚ I ˆƒĸ{ E ˆƒĸ  ˆƒ `’ ĩƒĸ  ‹… ˆƒ ˆ= ģƒ ģƒ`ĸ<  ˆƒ ^; ģƒ ™…ĐLC3 j3 ˆƒĸ˙  Q…`ĸ>  ˆƒ ^; ģƒ ™…ĐLf3 j3 ˆƒĸ  ]…` j3`Š ]ƒ ˛‚ ˆƒ \4 邮BqŦCq ú‚ ™…ĐLR4ĸ+  ˆƒ ^; ģƒ ™…ĐLŧ3 ˛‚ ˆƒ ˇ‚ ƒ ˆƒ \4 „ é‚LO4ĸ-  ˆƒ ^; ģƒ ™…ĐLė3 ˛‚ ˆƒ ˇ‚ ƒ ˆƒ \4 „ é‚LO4ĸ*  ˆƒ ^; ģƒ ™…ĐL4 ˛‚ ˆƒ ˇ‚ ƒ ˆƒ \4 0„ é‚LO4ĸ/  ˆƒ ^; ģƒ ™…ĐLL4 ˛‚ ˆƒ ˇ‚ ƒ ˆƒ \4 d„ é‚LO4LR4L{3 ˛‚ ƒ ģƒ`ŠP ]ƒ ˛‚ ˆƒ û9 ģƒ ™…ĐL‡4 ˛‚ ˆƒ ]5 ģƒŠP Eƒ`ĸ$  ˆƒ ^; ģƒ ™…ĐLĨ4 6ŠP Eƒ`ĸ@  ˆƒ ^; ģƒ ™…ĐLÃ4 8ŠP Eƒ`ĸ%  ˆƒ ^; ģƒ ™…ĐLá4 Ō8ŠP Eƒ`ĸ'  ˆƒ ^; ģƒ ™…ĐL˙4 ĸ9ŠP Eƒ`ĸ*  ˆƒ ^; ģƒ ™…ĐL 5ŽDqŦEqŠP Eƒ`ŽBqŦCq ú‚ ˆƒ ވ ģƒ ™…ĐLC5 _7ŠP Eƒ`ĸ E ˆƒ "= ģƒĸ  ‹…ŠP Eƒ`Š ]ƒ ˛‚ ˆƒ ŧ‚ ƒ ˆƒ ī? ģƒ é‚Ž\sŦ]s ˆƒĸ   …ĐLØ5 ˛‚ ƒ ˆƒĸ   …ĐL´5ĸŖ E ˆƒ "= ģƒLØ5 ˛‚ ƒ ˆƒŽ>qŦ?q $†ĐLØ5ĸ´ E ˆƒ "= ģƒ ˛‚ ƒ ˆƒĸ   …ĐLõ5ĸę ę ģƒ` ˛‚ ƒ ˆƒĸ  „ ˆƒ Ŗ@ ģƒ ģƒ`Š ]ƒŽBqŦCq ú‚ ˆƒ žˆ ģƒ ˆƒĸ   …ĐLC6ĸ  ‹… ģƒ` ˛‚ ˆƒĸ  邮BqŦCq ú‚ ˆƒ žˆ ģƒ ™…ĐLĒ6 ˛‚ ˆƒ ˇ‚ ƒ ˆƒĸ  0„ ˆƒŽBqŦCq %ƒŽBqŒCq 4ƒ ú‚ ˆƒ ´6 ģƒ „ é‚LP6 ˛‚ ƒ ģƒ` ˛‚ ú‚ ˆƒ ވ ģƒ ™…ĐLÜ6 ˛‚ ú‚ ˆƒĸ0  „` ˛‚ ú‚ ˆƒ žˆ ģƒ ™…ĐLW7 ˛‚ ú‚ ˆƒ Žˆ ģƒ ™…ĐL%7 ˛‚ ú‚ ˆƒĸA  „ ˆƒĸ   „` ˛‚ ú‚ ˆƒ žˆ ģƒ ™…ĐLW7 ˛‚ ú‚ ˆƒĸa  „ ˆƒĸ   „`ĸ  ‹…`Š ]ƒŽBqŦCq ú‚ ˆƒ ވ ģƒ ˆƒĸ   …ĐL7ĸ  ‹… ģƒ` ˛‚ ˆƒĸ  邮BqŦCq ú‚ ˆƒ ވ ģƒ ™…ĐLø7 ˛‚ ˆƒ ˇ‚ ƒ ˆƒĸ   0„ ˆƒŽBqŦCq %ƒŽBqŒCq 4ƒ ú‚ „ ˆƒĸ0  „ é‚L7 ˛‚ ƒ ģƒ`Š ]ƒŽBqŦCq ú‚ ˆƒĸ0  ۅ ˆƒŽBqŦCq ú‚ ˆƒĸ7  ļ… 9… ™…ĐLF8ĸ  ‹… ģƒ` ˛‚ ˆƒĸ  邮BqŦCq ú‚ ˆƒĸ0  Ѕ ˆƒŽBqŦCq ú‚ ˆƒĸ7  Å Q… ™…ĐLČ8 ˛‚ ˆƒ ˇ‚ ƒ ˆƒĸ  0„ ˆƒŽBqŦCq %ƒŽBqŒCq 4ƒ ú‚ „ ˆƒĸ0  „ é‚LS8 ˛‚ ƒ ģƒ`Š ]ƒŽBqŦCq ú‚ ˆƒĸ0  Ģ… ˆƒŽBqŦCq ú‚ ˆƒĸ1  Ģ… Q… ™…ĐL9ĸ  ‹… ģƒ` ˛‚ ˆƒĸ  邮BqŦCq ú‚ ˆƒĸ0   … ˆƒŽBqŦCq ú‚ ˆƒĸ1   … 9… ™…ĐL˜9 ˛‚ ˆƒ ˇ‚ ƒ ˆƒĸ  0„ ˆƒŽBqŦCq %ƒŽBqŒCq 4ƒ ú‚ „ ˆƒĸ0  „ é‚L#9 ˛‚ ƒ ģƒ`Š ]ƒ ˛‚ ˆƒŽBqŦCq %ƒŽBqŒCq 4ƒ ú‚ Ū‚ŽBqŦCq ú‚ ˆƒĸ'   …ĐLī9ŽBqŦCq %ƒŽBqŒCq 4ƒ ˛‚ ú‚Š Eƒ`Š ]ƒ ; ˛‚ ˆƒ ŧ‚ ƒ 邮BqŦCq ú‚ ˆƒ ~ˆ ģƒ ˆƒŽBqŦCq ú‚ ˆƒĸ_   … 9… ˆƒŽBqŦCq ú‚ ˆƒĸ~   … 9… ™…ĐLū: ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒŽBqŦCq %ƒŽBqŒCq 4ƒ ú‚ Ū‚ŽBqŦCq ú‚ ˆƒ îˆ ģƒ ˆƒŽBqŦCq ú‚ ˆƒĸ_   … 9… ™…ĐLî: ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒŽBqŦCq %ƒŽBqŒCq 4ƒ ú‚ Ū‚L‹: ˛‚ ƒ ˆƒĸ  Ū‚ ˛‚ ƒ ˆƒ ŧ‚ ƒ „ ģƒ`ŽBqŦCq ú‚ ˆƒĸ    … ˆƒŽBqŦCq ú‚ ˆƒĸ    … 9… ™…ĐL];ŽBqŦCq %ƒŽBqŒCq 4ƒL;` ;ŽBqŦCq ú‚ ˆƒ ˇ‚ ú‚ Ģ…ĐL€;ĸ `ŽBqŦCq %ƒŽBqŒCq 4ƒĸ `Š ]ƒŽZsŦ[s ™…ĐLĀ< ˇ‚ ˆƒĸ  é‚ ŧ‚ ƒ ˆƒ ŧ‚ ƒ „ ˆƒĸàE ˆƒ ’ ¸ƒ ˛‚ ˆƒĸ  é‚ ˛‚ ƒ ˆƒĸ  ۅĐLp< ˇ‚ ƒ ˆƒŽ^sŦ_s ۅĐLN<ĸb F ˆƒ ŧ‚ ˆƒ ƒ %ƒ é‚ 4ƒ „ ú‚ ˆƒĸ˙  Q… ˆƒĸĘ E ˆƒ ’ ¸ƒL[<ĸĐ E ˆƒ ’ ģƒ ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒLæ; ˇ‚ ƒ ˆƒĸ  ۅĐLœ<ĸŠ I ˆƒĸÔ E ˆƒ ’ ¸ƒLŠ<ĸØ E ˆƒ ’ ģƒ ˇ‚ ƒ ˆƒŽ^sŦ_s ۅđLˇ; ˇ‚ ˆƒĸ  é‚ ˇ‚ ƒ ˆƒŽ^sŦ_s ۅĐL=ŽVsŦWs ˆƒĸb F ˆƒ Á‚ ƒ „ ú‚ ˆƒ æ‡ ¸ƒ ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒLÍ< ¸ƒ`ĸŠ I ˆƒĸÚ E ˆƒ ’ ¸ƒ ˛‚ ƒ ˆƒĸå E ˆƒ ’ ¸ƒŽ`sŦas %ƒŽ`sŒas ˆƒĸ  ļ…ĐL‡=ĸđ E ˆƒ ’ ģƒĸ  ‹… ˆƒ ˆ= ģƒ`ŽTsŦUs ˆƒĸ  Ģ…ĐLŦ=ŽTsŦUs ˆƒ Į ģƒŽVsŦWs ˆƒĸ  Ģ…ĐLĐ=ŽVsŦWs ˆƒ Į ģƒ ˛‚ ƒLo†`Š ]ƒĸ* JŽ@qŒAq ˛‚ ˆƒĸ  é‚ ˛‚ ƒ ˆƒĸ  ۅĐL7>ĸR q ˆƒ ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒ რ„ ˆƒĸ  é‚Lö= ģƒ`Š ]ƒ ˛‚ ˆƒĸ  é‚ ˇ‚ ƒ ú‚ ™…ĐLŸ> ˛‚ ˆƒĸ  ˆƒ ŧ‚ ƒ 0„ ˆƒ Á‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ „ ˆƒĸ  Ā„ é‚LM> ˛‚ ƒ ģƒ`Š ]ƒ ŧ‚ ˆƒ Ƃ ƒ ˆƒ +‹ ģƒ ˆƒĸ  „ 邮@qŦAq ˆƒ Á‚ ƒ „ ˆƒŽ ģƒ é‚ ˛‚ ˆƒŽ@qŦAq é‚ĸR q ˆƒ ŧ‚ ƒ რ„ ƒ ˆƒ ˇ‚ ƒ ˆƒĸ  „ ˆƒ @ ¸ƒĸR q ˆƒ ŧ‚ ƒ რ„ ˆƒ ˇ‚ ƒ é‚ Æ‚ ƒ ˆƒ ˇ‚ ƒ ˆƒĸ  „ ˆƒ @ ¸ƒ Á‚ ƒ ˆƒ ˇ‚ ƒ ˆƒĸ  „ ˆƒ Պ ¸ƒ ˛‚ ƒ ˆƒ Á‚ ƒ „Ž@qŒAq ĩƒ`Š ]ƒ ˛‚ ˆƒĸR q ˆƒ Á‚ ƒ ˆƒ ;> ģƒ áƒ „ ƒ é‚ ˛‚ ƒ ™…ĐL†@ ˇ‚ ƒ ˆƒ ˇ‚ ƒ ˆƒĸ  „ ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐLa@L†@Lƒ@ ˛‚ ˆƒ ˇ‚ ƒ ˆƒĸ  „ ˆƒ Ŗ@ ģƒ é‚L@ ˛‚ ƒ ģƒ` ˛‚ ƒ ˆƒ ŧ‚ ƒ é‚` ˛‚ ƒ ƒ`Š ]ƒŽ@qŦAq ˆƒŽ>qŦ?q  …ĐLÍ@ ¸ƒ` ˛‚ ˆƒĸ, F ˆƒĸ. F ˆƒ ׍ ¸ƒ é‚ ˆƒĸ   …ĐLAĸ4 F ˆƒĸ  ˆƒ `’ ¸ƒĸ  ‹… ˆƒ ˆ= ģƒ ˇ‚ ˆƒŽ>qŦ?q é‚ ˇ‚ ƒ ˆƒŽ@qŦAq $†ĐL1B ˇ‚ ƒ ˆƒĸ  „ ú‚ ˆƒĸ~  Ģ…ĐLŦA ˇ‚ ƒ ˆƒĸ  „ ˆƒ Ŗ@ ģƒ ˆƒ ŧ‚ ƒ ˆƒĸ  „ ˆƒĸL F ˆƒ Á‚ ƒ ˆƒ `’Š EƒŽZsŦ[s ™…ĐLöA ˇ‚ ƒ ˆƒĸ  „ ˆƒ Ŗ@ ģƒ ˆƒ ŧ‚ ƒ ˆƒĸ  „ ˆƒĸW F ˆƒ ’ ĩƒ ˇ‚ ˆƒ ŧ‚ ƒ ˆƒ Á‚ ƒ ˆƒĸ  „ ˆƒ +‹ ģƒ „ ˆƒĸ  „ é‚L,A ˛‚ ƒ ˆƒ Į ģƒ ¸ƒ`Š ]ƒ ˛‚ ˆƒĸ  რ„ ˆƒĸ  é‚ ˛‚ ˆƒĸ  რ„ ˆƒĸ Ō‚ ƒ é‚ ˛‚ ˆƒĸ  რ„ ˆƒĸ  é‚ ˛‚ ˆƒĸ  რ„ ˆƒĸ Ō‚ ƒ é‚ ˛‚ ˆƒĸ  რ„ ˆƒĸ  é‚ ˛‚ ˆƒĸ  რ„ ˆƒĸ  é‚ ˛‚ ˆƒĸ  რ„ ˆƒĸ  é‚ ˛‚ ˆƒĸ  რ„ ˆƒĸ  é‚ ˛‚ ˆƒĸ  რ„ ˆƒĸ  é‚ĸ  ˆƒ ˇ‚ ˆƒĸ Ō‚ ƒ ˆƒ Hˆ ĩƒŠ Eƒ`o/out-l-owas65: can't open %s rcan't open %s ~eot~eod~eot~eod%u = %u+%u (0x%04X, 0x%04X, 0x%04X) as65: %d errors usage: as65 [-l] [-o outfile] file1 ... [filen] %ssymbol/pseudo-op requiredrmnemtabrmnemtabas65: can't open mnemtab optaboptabas65: can't open optab as65: illegal optab size label redefinedillegal address modesyntax error'x' expected')' expected'y' expected'x' or 'y' expectedbranch out of range'=' expectedpseudo-op expectedbytedbyteendwordtextfileillegal pseudo-opras65: can't open %s illegal expressionsymbol undefinedillegal symbol%04X %02X %s *****: %serror: %s as65: too many errors, assembly aborted symbol table full wg/outas65: can't open g/out %s =$%04X %s =$%04X Šüĸ ˙ ô˙†ôŽ0ūĸ  ˆƒLVĒŠ ]ƒĸ ŽTsŒUsĸ ŽVsŒWsĸ_ CŽ:qŒ;qĸ ŽZsŒ[s ŧ‚ ƒ ˆƒĸ  რ„ ƒ ƒ ˆƒĸ˙  Q… ˆƒĸ-   …ĐLzĸe C ˆƒ Á‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ ^Š ¸ƒ ˆƒ­!H­ H hĒh¨Š Ž Œ!ĸLô˙Øē†~Š„ ô˙†|„}ĸH Š ĸŠ C L[A…†p„q į˙ ē †ŊŧĒ †Ļp¤q †Ļt¤u †Ļx¤y †Ļ|¤} † ą|ĒČą|¨ †ĨĻp¤q`˜ ”Š ”Š î˙`HJJJJ Ąh Ą`)É 0ii0Lî˙ ˙` `Ļ|¤}`ĸL×ĸL×ĸL×ĸL×ĸ L×ĸ  Še|ǘe}¨` ¨ Š‘tL¯ ¨„q Š‘tČĨq‘t¨`†p„q ąpĒL¯†p„q ąpĒČąp¨` ą|…xČą|…y ĀlxčĐČ`Šiǘi¨`Ęā˙Đˆ`8Šéǘé¨`e|…|Še}…}`e|…|Ĩe}…}`…x8Ĩ|åx…|Ĩ}é…}`…x8Ĩ|åx…|Ĩ}å…}`ŠĻt…t˜¤u…u`8Ĩ|é…|Ĩ}é…}„q˜ ‘|ˆŠ‘|¤q`„q ą|…tČą|…u¤qLĀ Ā ĀĨ|i…|Ĩ}i…}`„q ą|…pŠ‘|Čą|ĒĨq‘|ЍĻp`Š…x†r„s „p„q p&q&r&s Ĩxep…pŠeq…qˆĐæĻp¤q` ¨Šetǘeu¨` ¨†p„q8ĨtåpĒĨuåq¨` ¨†r„s „p„q p&q&r&sĨtep…pĨueq…qŠer…rˆĐāĻp¤q` ¨˜EuH˜ $u 0 Šh ` ¨ †x„yĨt…pĨu…q „t„uĸp&q&t&u8Ĩtåx¨Ĩuåy„t…u&p&qĘĐåĻp¤q` ¨˜H $u 0 ãh ` ¨ †x„y „p„qĸt&u&p&q8Ĩpåx¨Ĩqåy„p…q&t&uĘĐåĻp¤q`ŠĐ˜Đdivision by zero`8Šåt…tŠåu…u` ¨Štǘu¨` ¨ŠEtǘEu¨` ¨Š%tǘ%u¨` ¨Ĩu…qĨtāđFqjĘĐúǤq` ¨Ĩt…pĨuāđp*ĘĐú¨Ļp`ŠI˙iǘI˙i¨`āĐĀ` ëđĸ`ĸ` ëĐĸ`ĸ` ëđĸ`ĸ` ëđĸ`ĸ` ë°ĸ`ĸ` ëĸ`ĸ` ¨†p˜ I€…qĨuI€ÅqĐĨtÅp` 4đĸ`ĸ` 4đĸ`ĸ` 4°ĸ`ĸ` 4ĸ`ĸ` ¨†p„q ĨuÅqĐĨtÅp`ÉĐ'Š ĸ ô˙Š~ ô˙Š  Î˙О ĸ˙ ô˙ escape`Š ô˙Ļ~š` Š…€Š…Šĸ€  Ũ˙Éđ ą|ijjjĸ  Î˙Ēđ `ĸ˙ ˙` Š€ĸ  Î˙Ēđ `ĸ˙ ˙` ą|¨Š Î˙` Š…€Š…Šĸ€  Ũ˙`ŠLQ ĸ  ÷˙Šĸ ô˙ `Šĸ€  Ú˙Ļ€¤` ą|…pČą|…q ąp™đČĐöŠ ™` ą|ĒŠ ô˙Šđĸ `ŠHL… ą|Éđ ÉđŠHL… ą|…pČą|…qČą|…xČą|Ē ĨxĐāđĘÆxąp ČĐíæqLl` ą|…€ ą|…Čą|…‚Š…ƒ…„Čą|……Čą|…†Š…‡…ˆhĸ€  Ņ˙8 ą|å…ĒČą|冨` ą|đ¨ ×˙°ĒL¯ĸ˙ ˙` ā˙É Đ î˙Š î˙ĒL¯ ą|Ē ą|Éđ É𨊠Ô˙`ŠÉ đ î˙`Š î˙Š î˙` ą| î˙` ą|ĒČą|… ą|¤ ô˙` ą|ĒČą|… ą|¤ ņ˙˜Ēh)¨` ą|H  ą|…xČą|…y Š‘xČŠ‘xhĻx¤y Ũ˙ÉĐĸ˙ ˙`ĸ ‘x` ą|ĒŊ^ )Ēđĸ` ą|ĒŊ^ )Ēđĸ` ą|ĒŊ^ )Ēđĸ` ą|ĒŊ^ )Ēđĸ` ą|ĒŊ^ )DĒđĸ` ą|ĒŊ^ )Ēđĸ` ą|ĒŊ^ )Ēđĸ` ą|ĒŊ^ )Ēđĸ` ą|ĒŊ^ )Ēđĸ` ą|ĒŊ^ ) Ēđĸ` ą|)€I€Ēđĸ` ą|ĒŊ^ )đ8Šé Ē` ą|ĒŊ^ )đŠi Ē` ą|)Ē`  AAAAAABBBBBB Š b ˇ  Á  î ŧ   * î 9 ˙ žĐL!Lō ŧ   9 î ŧ   * î 9  Æ   * î 9 ˙ ã žĐLY!L!! ˇ  Ā` ˇ  ˙  Á   * î 9 ˙ ĨĐL¸! ˇ   * î 9 ˙ ĸ  ĨĐLĩ!ĸ `Lc! ˇ  ˙  Á   9 î ˙ "`Š b ˇ  Á  î ŧ   * î 9  Æ   * î 9 ˙ ã žĐL&"Lî! ˇ  Ā`Š b ˇ ĸ  î ŧ   * î 9 ˙ žĐLt" ˇ   * î 9LB" ˇ  Ā`Š b ˇ  Á  î ŧ   * î 9 ˙ žĐL˛"L’" ŧ   9 î ŧ   * î 9  Æ   * î 9 ˙ ã žĐL3# Æ   9 î ĸ  āĐL0# ŧ   9 î ĸ  ãL3#LÁ" ˇ  Ā` Á   9 î ĸ  Õ  ŧ  ˙  Æ   * î 9 ˙ Ĩ V žĐL´# ˇ   * î 9 ˙ ĸ  ĨĐLą#ĸ `L=# Á  ĸ  āĐLÎ#ĸ ` ˇ  ˙  Á   9 î ˙ "`Š b ˇ  Æ  î ŧ ĸ  î ŧ   Đ  āĐLÂ$ Á   * î 9  Ë   * î 9 ˙ 㠍ĸ  ĨĐL­$ ŧ   * î  Đ  āĐLŖ$ Á   * î 9 ĸ  ãLd$ ˇ  Ŋ` ŧ   * î 9L$ ˇ  Ŋ` ˇ   Č Ā`Š b Á  ˙ ĸw  ĨĐLj% ˇ ĸ   Æ   } Ŋ î ĸ   °ĐLH% ˇ   Č Ā ŧ   Ķ Ā ˇ ĸ   Æ   ą Ŋ îL‰% ˇ ĸ   Æ   } Ŋ î ˇ  ĸ   ĨĐLŠ%ĸ  Ā` ˇ  Ā`Š b ˇ  Æ  î Æ   9 î ĸ  ģ  Á  Õ   Ã Ā î ĸ   ° V žĐL¯& ŧ  ĸ  ĨĐLZ& ˇ   9 î  Æ  )ĐLW& ˇ  Æ  îLĮ% ŧ  ĸ   ĨĐL|& ŧ ĸ   î ˇ   * î 9  Á  㠍ĸ   ĨĐLŦ&L¯&LĮ% ˇ  ĸ  ã ŧ  ĸ   Ĩ  ŧ   Ë  Ĩ V žĐLú&ĸ  Ŋ` Á  Ŋ`Š b Ë  ĸ  °  Đ  ĸ  ° V  Đ  ĸ  ° V žĐL§' Á  Ë  î Á  ˙ žĐL§' Á  ˙ ĸ   ĨĐL•' Á  ĸ   ã Á   * îL\' ˇ  Ë   * î 9 ˙ î žĐLņ' ŧ  Đ   Á   ë Ŋ îL§' ŧ  ē`Š b ˇ  Æ  î ŧ ĸ   Ã Ā î ĸ   °  Á  ĸ  Õ V žĐLn( ˇ   * î 9  Á  ãL( ŧ  ĸ  ā  ŧ   Ë  Ĩ V žĐLĻ(ĸ  Ŋ` ˇ  ĸ  ã Á  Ŋ`Š b ˇ  Á   * î 9 ˙ î žĐL)ĸ   ŧ   ë ŊLÅ(ĸ  ĸ    ë Ŋ Ā`Š…Š rĸ  Ų ĸ  Ų   Á  Ķ) ēĸ   ŧ  ' ŊŠ…Š V`Š…Š rĸ  Ų ĸ  Ų   Á  Ķ) ēĸ  Ų   ŧ  ' ŊŠ…Š V` Á  Á   Á   Ķ) ē`Š b Ë ĸ ×  îĸ ×  ˙ žĐLĘ1 Đ  Đ  îĸ ×  ˙ ĸ%  °ĐLW* Ë   * î 9 ĸ ×   * î 9 ˙ ãLé)ĸ ×   * î ˙ ĸ-  ĨĐLŸ*ĸ × ĸ ×   * î 9 ˙ ãLŽ*ĸ × ĸ   ãĸ ×  ˙ ĸ0  ĨĐL+ĸ × ˙ ĸ-  ĨĐLų*ĸ ×   * î 9 ˙L+ĸ × ĸ ×   * î 9 ˙ ã ŧ ĸ  îĸ ×  ˙  ŗ Ā žĐL‡+ ŧ  Á  ĸ   5 ĸ ×   * î 9 ˙  ĸ0  " îL(+ĸ ×  ˙ ĸ.  °ĐL´+ ˇ ĸ   îL\,ĸ ×   * î ˙  ŗ Ā ĸ  ĨĐLđ+ ˇ ĸ  îL\, ˇ ĸ  îĸ ×  ˙  ŗ Ā žĐL\, ˇ  ŧ  ĸ   5 ĸ ×   * î 9 ˙  ĸ0  " îLũ+ Æ ĸ ×   * î 9 ˙ 㠍ĸd  ĨĐLC-ĸ ×   ĸ € V žĐL- Ë   * î 9 ĸ-  ã Ë  Đ  ĸ   ĸ ×  ĸ ×     ā1 ē  îL@- Ë  Đ  ĸ   ĸ ×  ĸ ×    ā1 ē  îLü/ Æ ˙ ĸo  ĨĐL–- Ë  Đ  ĸ  ĸ ×  ĸ ×    ā1 ē  îLü/ Æ ˙ ĸu  ĨĐLé- Ë  Đ  ĸ   ĸ ×  ĸ ×    ā1 ē  îLü/ Æ ˙ ĸx  ĨĐL<. Ë  Đ  ĸ  ĸ ×  ĸ ×    ā1 ē  îLü/ Æ ˙ ĸX  ĨĐL’. Ë  Đ  ĸ   ĸ ×  ĸ ×    ā1 ē  îLü/ Æ ˙ ĸc  ĨĐLŨ. Ë   * î 9 ĸ ×   ã Ë  ĸ  ãLü/ Æ ˙ ĸs  ĨĐLÎ/ Á ĸ ×   î Ë   9 î ˇ  ĸ  āĐLb/ Ë   * î  Æ   * î 9 ˙ ã žĐL_/L*/LË/ Ë   * î  Æ   * î 9 ˙ ã žĐLË/ ˇ   9 î * ĸ  ĨĐLČ/ Ë  ĸ  ãLË/Lb/Lü/ Ë   * î 9  Ë ˙ ã Ë  ĸ  ã ŧ  Á   Õ  ĸ ×  " " î ĸ  ģĐLŗ1ĸ × ˙ ĸ-  ĨĐLž0 ŧ   9 î * ĸ  ģĐL‹0 Ë   * î 9 ĸ   ãLK0 Ë  ĸ  ãLŗ1 Æ ˙ ĸd  Ĩ  Õ  ˙ ĸ-  Ĩ V ĸ × ˙ ĸ0  Ĩ V žĐLų0 Đ   * î 9 Ë   Õ  ĐL@1 Ë   Á    Đ   9 î * ˙ ãLų0 ŧ   9 î * ĸ  ģĐL„1 Đ   * î 9 ĸ × ˙ ãL@1 Ë   * î 9 ˙ žĐL¤1L„1 Ë   9 îĸ ×   / î @Lé) Ë  ĸ  ㊠J`Š b Đ  ĸ  ÕĐL2 ŧ ĸa  ĸ   " îL=2 Đ  Õ   î ŧ ĸA  ĸ   " î ˇ  Đ  î Æ  ĸ  ĨĐL€2 ˇ   * î 9 ĸ0  ãL/3 Æ  žĐL/3 Á  Ë  ĸ ×  ā î ĸ   āĐLå2 ˇ   * î 9  Æ  ĸ0   ãL3 ˇ   * î 9  Æ   Æ   ã Æ  Ë  ĸ ×  ‡ îL€2 Æ  ŧ   Õ  " î ˇ   9 î * ĸ  ã Ë   ŧ  )ĐLŅ3 Á  Đ  ˙ î Ë   * î 9  ŧ  ˙ ã ˇ   9 î *  Æ  ãLf3 Æ  ē`Š…Š rĸ  Ų ĸ  Ų   Á ĸ   Š4Š JŠ…Š V`Š…Š rĸ  Ų ĸ  Ų   Á ĸ  Ų   Š4Š JŠ…Š V` Á  Á   Á  ĸ    Š4Š J`Š bĸ ×  ĸ   °ĐLģ4ĸ ×  ĸ  ãĸ × ĸ ×  î ˇ ĸ  îĸ ×  ˙ žĐL"@ĸ × ˙ ĸ%  ° ĸ × ˙ ĸ  Ĩ > žĐLî7ĸ × ĸ ×   * î 9 ˙ 㠍 Ķ Ā žĐLV5L 5 Õ ĸ ×   * î 9 ˙ 㠍 Ķ Ā žĐLŠ5LV5ĸ × ˙ ĸ  ĨĐL¤5Lî7ĸ ×  ĸ   °ĐL7 Õ ˙ ĸ  ĨĐL7ĸ × ĸ ×  î Æ ĸ  î Æ  ĸ  āĐLđ6 Õ ĸ ×   Ã Ā ã ĸ   ĨĐL76Lđ6 Õ ˙ ĸ  ĨĐL†6ĸ ×   9 î ĸ ×  )ĐLƒ6ĸ × ĸ ×  îLķ5ĸ ×   * î 9 ĸ × ˙ ã Õ ˙ ĸ   Ĩ ĸ × ˙ ĸ   Ĩ > žĐLÛ6Lđ6 Æ   * î 9Lķ5ĸ ×  ĸ  ã Õ ˙ ĸ   Ĩ ĸ ×  ĸ ×  Ĩ V žĐLF7ĸ  Š J`ĸ × ĸ ×  î Õ ĸ ×   * î 9 ˙ 㠍 Ķ Ā žĐL7LY7Lž5ĸ × ˙ ĸ  ° ĸ × ˙ ĸ × ˙ ° V ĸ × ˙ ĸ%  ° V žĐLë7ĸ  Š J`Lî4ĸ × ˙ ĸ  ĨĐL8L"@ĸ × ĸ ×   * î 9 ˙ ã ŧ ĸ × ˙ ĸ*  ° î ĸ  ĨĐLv8ĸ × ĸ ×   * î 9 ˙ ãĸ × ˙  ŗ Ā ĸ  ĨĐLĻ8 Đ ĸ  îL9 Đ ĸ  î Đ  Õ  ĸ   5 ĸ × ˙  ĸ0  " îĸ × ĸ ×   * î 9 ˙ 㠍 ŗ Ā žđLŗ8 Æ ĸ  îĸ × ˙ ĸd  ĨĐLÃ: Ë ĸ  î Õ ˙ ĸ+  ĨĐL9 Õ ĸ ×   * î 9 ˙ ã Đ   9 îLã9 Õ ˙ ĸ-  ĨĐLã9 Õ ĸ ×   * î 9 ˙ ã Ë ĸ   î Đ   9 î Õ ˙  ŗ Ā ĸ  ĨĐL:ĸ  Š J` Õ ˙  ŗ Ā ĸ  °  Õ   9 î * ĸ  ģ V žĐLĨ: Æ  Ë  ĸ   5 ĸ × ˙  ĸ0  " î Õ ĸ ×   * î 9 ˙ ãL: Æ  Ë   Õ  5 îLŦ?ĸ × ˙ ĸo  ĨĐLĀ; Õ ˙ ĸ0  ā ĸ × ˙ ĸ7  ģ > žĐL;ĸ  Š J` Õ ˙ ĸ0  Õ ĸ × ˙ ĸ7  Č V  Õ   9 î * ĸ  ģ V žĐLŊ; Æ  Ë  ĸ  5 ĸ × ˙  ĸ0  " î Õ ĸ ×   * î 9 ˙ ãL;LŦ?ĸ × ˙ ĸx  Ĩ ĸ × ˙ ĸX  Ĩ > žĐLĶ= Õ ˙ ĸ0  ĨĐLj< Õ ĸ ×   * î 9 ˙ 㠍ĸ × ˙ ĨĐL]< Õ ĸ ×   * î 9 ˙ ãLj<ĸ  Š J` Õ ˙  Ã Ā ĸ  ĨĐL•<ĸ  Š J` Õ ˙  Ã Ā ĸ  °  Õ   9 î * ĸ  ģ V žĐLĐ= Õ ˙  ŗ Ā žĐL = Á ĸ × ˙ ĸ0  " îLˆ= Õ ˙  “ Ā žĐLL= Á ĸ × ˙ ĸA  " ĸ    îLˆ= Õ ˙  Ŗ Ā žĐLˆ= Á ĸ × ˙ ĸa  " ĸ    î Æ  Ë  ĸ  5  Ë   î Õ ĸ ×   * î 9 ˙ ãL•ĸ × ĸ ×   Á   * î 9 æ   î Õ ˙ ĸ  °  Õ   9 î * ĸ  ģ V žĐLŧ>ĸ ×   * î 9 ĸ × ˙ ã Õ ĸ ×   * î 9 ˙ 㠍 Ķ Ā žĐLš>Lŧ>L)>ĸ ×  ĸ  ãLB? Õ ˙ ĸ  °  Õ   9 î * ĸ  ģ V žĐLB? Õ ĸ ×   * î 9 ˙ 㠍 Ķ Ā žĐL??LB?LŅ>LŦ?ĸ × ˙ ĸc  ĨĐLŸ? Æ ĸ × ˙ î Õ ĸ ×   * î 9 ˙ ã Đ   9 îLŦ?ĸ  Š J` ŧ  ĸ  ° ĸ × ˙ ĸs  ° V žĐL@ĸ ×   ŧ   * î 9 æ    Ë  îĸ ×   9 îLÛ4 ˇ Š J`Š b Á ĸ  î ŧ ĸ  î ˇ  Ë   * î 9 ˙ î ĸ+  ĨĐL›@ ˇ  Ë   * î 9 ˙ îLŪ@ ˇ  ĸ-  ĨĐLŪ@ ˇ  Ë   * î 9 ˙ î ŧ ĸ   î ˇ   ŗ Ā žĐLEA Á  Æ  ĸ   5  Á   ĸ0  " î ˇ  Ë   * î 9 ˙ îLŪ@ Á   Á  5 ē`Š…ŠF rĸD  Ų   îĸB  Ų  ŧ îĸ  Ų ĸ  æ  ĸD  Ų  îĸB  Ų   * î 9 ĸ  ãĸ@  Ų ĸ  îĸD  Ų  ˙ ĸ   °ĐLPCĸD  Ų  ˙ ĸ   Ĩ ĸF  Ų  ˙ ĸ   Ĩ > žĐLJBĸD  Ų   * î 9LõAĸD  Ų  ˙ ĸ   °ĐLœBĸ  Ų ĸB  Ų   * î 9 æ  ĸD  Ų  îĸD  Ų  ˙ ĸ   ° ĸF  Ų  ˙ ĸ   ° V ĸF  Ų  ˙ ĸ   ° V žĐL-CĸB  Ų   * î 9 ĸF  Ų   * î 9 ˙ ãLœBĸB  Ų   * î 9 ĸ  ãLŲAĸF  Ų  ĸ  Ų Î ĸD  Ų  Î   ŊŠ…ŠF V`­!H­ H hĒh¨Š Ž Œ!ĸLô˙Øē†~Š„ ô˙†|„}ĸH Š ĸŠ C L[A…†p„q į˙ ē †ŊŧĒ †Ļp¤q †Ļt¤u †Ļx¤y †Ļ|¤} † ą|ĒČą/* dummy header file */ /* dummy header file */ Lô˙Øē†~Š„ ô˙†|„}ĸH Š ĸŠ C L[A…†p„q į˙ ē †ŊŧĒ †Ļp¤q †Ļt¤u †Ļx¤y †Ļ|¤} † ą|ĒČą|¨ †ĨĻp¤q`˜ ”Š ”Š î˙`HJJJJ Ąh Ą`)É 0ii0Lî˙ ˙` `Ļ|¤}`ĸL×ĸL×ĸL×ĸL×ĸ L×ĸ  Še|ǘe}¨` ¨ Š‘; enter.s 11-Apr-89 A.J.Travis ; ; patch a jump to main from user entry point ; *=__enter ; jmp _main ; ; enter.s 11-Apr-89 A.J.Travis ; ; patch a jump to main from user entry point ; *=__enter ; jmp _main ; ¤} † ą|ĒČą|¨ †ĨĻp¤q`˜ ”Š ”Š î˙`HJerrors 15-Nov-88 A.J. Travis ------------------------------ tcc compiler error messages 1. Illegal function or declaration 2. Already defined 3. Missing opening parenthesis 4. Illegal argument name 5. Missing closing parenthesis 6. Wrong number of arguments 7. Illegal symbol name 8. Argument name expected 9. Comma expected 10. 'while' expected 11. Illegal 'goto' label 12. L-value required 13. Illegal address 14. Can't subscript constant 15. Can't subscript variable 16. Illegal expression 17. delimeter expected 18. Illegal symbol name 19. Global symbol table full 20. Local symbol table full 21. Too many active whiles 22. No active whiles 23. Illegal character constant 24. Constant required 25. Negative size illegal 26. Missing semicolon 27. Missing bracket errors 15-Nov-88 A.J. Travis ------------------------------ tcc compiler error messages 1. Illegal function or declaration 2. Already defined 3. Missing opening parenthesis 4. Illegal argument name 5. Missing closing parenthesis 6. Wrongpr =$0070 sr =$0074 tr =$0078 sp =$007C rsp =$007E asave =$007F param =$0080 osrom =$00F4 userv =$0200 brkv =$0202 irq1v =$0204 irq2v =$0206 cliv =$0208 bytev =$020A wordv =$020C wrchv =$020E rdchv =$0210 filev =$0212 argsv =$0214 bgetv =$0216 bputv =$0218 gbpbv =$021A findv =$021C fscv =$021E evntv =$0220 uptv =$0222 netv =$0224 vduv =$0226 keyv =$0228 insv =$022A remv =$022C cnpv =$022E ind1v =$0230 ind2v =$0232 ind3v =$0234 gsbuf =$0400 osurom =$8000 osrdrm =$FFB9 oseven =$FFBF gsinit =$FFC2 gsread =$FFC5 nvwrch =$FFC8 nvrdch =$FFCB osfind =$FFCE osgbpb =$FFD1 osbput =$FFD4 osbget =$FFD7 osargs =$FFDA osfile =$FFDD osrdch =$FFE0 osasci =$FFE3 osnewl =$FFE7 oswrch =$FFEE osword =$FFF1 osbyte =$FFF4 oscli =$FFF7 start =$1902 __trace =$193E ext =$19AF addr =$19B7 addr_1 =$19BC addr_2 =$19C1 addr_3 =$19C6 addr_4 =$19CB addr_5 =$19D0 addr_6 =$19D5 addr_b =$19D7 addr_w =$19D9 sind_b =$19E3 sind_w =$19EE lind_b =$19FF lind_w =$1A0B scall =$1A19 inc1 =$1A2A inc2 =$1A2F dec1 =$1A39 dec2 =$1A40 sinc_b =$1A4A sinc_w =$1A56 sdec_b =$1A62 sdec_w =$1A72 swap =$1A82 push =$1A8D pop =$1AA8 drop3 =$1ABA drop2 =$1ABD drop =$1AC0 xchange =$1ACE scale2 =$1AE6 scale =$1AE8 add =$1B15 sub =$1B22 mult =$1B35 div =$1B69 udiv =$1B87 mod =$1BC5 umod =$1BE0 or =$1C3E xor =$1C4A cand =$1C56 casr =$1C62 casl =$1C79 neg =$1C90 nz =$1C9E eq =$1CA5 ne =$1CB0 gt =$1CBB le =$1CC8 ge =$1CD5 lt =$1CE0 ugt =$1D04 ule =$1D11 uge =$1D1E ult =$1D29 escape =$1D48 _exit =$1D74 _open =$1D7D _creat =$1DB1 _close =$1DC8 _unlink =$1DD3 _stat =$1DE8 _system =$1DED __cmdlin =$1E01 _read =$1E2C _write =$1E44 _getc =$1EC3 _putc =$1EEB _vdu =$1F16 _osbyte =$1F1E _osword =$1F32 _osfile =$1F4D _isalpha =$1F83 _isupper =$1F93 _islower =$1FA3 _isdigit =$1FB3 _isxdigi =$1FC3 _isspace =$1FD3 _ispunct =$1FE3 _isalnum =$1FF3 _isprint =$2003 _iscntrl =$2013 _isascii =$2023 _toupper =$2031 _tolower =$2043 _toascii =$2055 _ctype_ =$205E _strcat =$20DE _strcmp =$2163 _strcpy =$21DA _strlen =$2230 _strncat =$227E _strncmp =$233D _strncpy =$23F0 _fclose =$24CC _fopen =$24DC _fgets =$25B3 _fputs =$2704 _gets =$27FB _puts =$28C0 _printf =$291C _fprintf =$2965 _sprintf =$29B4 __doprin =$29D3 _itoa =$31E0 _scanf =$33DB _fscanf =$341A _sscanf =$345F __doscan =$348A _atoi =$402E __cmdini =$415B __enter =$438A pr =$0070 sr =$0074 t Small-C v0.72 by A.J.Travis --------------------------- Installation Instructions by J.G.Harston ---------------------------------------- The programs supplied on this disk are all compiled to run Small-C from the current directory. They will need to be recompiled to run on your system. The following instructions may help you to install Small-C. 1: Ensure your distribution disk is write protected and copy it to your destination medium, such as to another floppy disk, to a hard drive or to a network server. Put the original in a safe place, and use the copy from now on. 2: Decide where the programs are going to go. The distribution disks are supplied in a recommended structure. With DFS there is little flexibility, and it is recommended you should use the supplied structure. With non-DFS systems, all the files are within $.Library.CLib. 3: If compiling on a DFS disk, you should remove the documentation in directory T to create enough space. 4: Edit the local/h file to specify what directories you are using. There are comments that give guidance and suggestions. 5: Load and enter the C shell by doing *exec loadsh 6: With the shell loaded and running, recompile the compiler programs for your system. With DFS, do: *dir :0.$ *exec mkdfs With all other systems, do: *dir $.Library.CLib.source *exec mkall This will take some time - about 30 to 40 minutes. 7: If you received no errors, then everything should be ready for use. Good Luck with your programming. Small-CŠüĸ ˙ ô˙†ôŽ0ūĸ  ˆƒLVĒĸ  ‹…ŽbŒcĸ  ‹…ŽdŒe ˛‚ ƒ ˆƒĸ  ۅĐLL gĸų Ž\Œ]ĸ Ž^Œ_ĸ Ž`Œa ˇ‚ ƒ ˆƒĸ  რ„ ƒ ƒ ˆƒĸ˙  Q… ˆƒĸ-   …ĐLŗĸ˙  ˆƒ ŧ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐL@ ˛‚ ƒ ˆƒĸ  ۅĐLė gL= ˇ‚ ƒ ˆƒĸ  რ„ ƒŽ\Œ] ˛‚ ˆƒ ˇ‚ ƒ ˆƒĸ  „ é‚ ˇ‚ ˆƒ ŧ‚ ƒ ˆƒĸ  რ„ é‚L°ĸ  ˆƒ ŧ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐL­ĸ €Ž^Œ_ĸ €Ž`Œa ˛‚ ˆƒ ƒ 4ƒ é‚ ˇ‚ ˆƒ ƒ *ƒ é‚ ;ƒL° gLj ˛‚ ƒ ˆƒĸ  ۅĐLË gĸ  ˆƒŽ\Ŧ] ˆƒ Ŧ† ¸ƒŽdŒe ˆƒĸ  ‹…  …ĐL&Ž\Ŧ] ˆƒĸ  ˆƒĸ  ˆƒ `’ ĩƒĸ  ‹… ˆƒ Œ ģƒ ˛‚ ˆƒ ƒ 4ƒ é‚ ™…ĐL0ĸ  ˆƒ ŧ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ x† ¸ƒŽbŒc ˆƒĸ  ‹…  …ĐL¸ ˇ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒĸ  ˆƒĸ  ˆƒ `’ ĩƒĸ  ‹… ˆƒ Œ ģƒĸ  ˆƒĸ\  ˆƒŽbŦc ˆƒ '‡ ĩƒŽfŒg ˆƒĸ  ļ…ĐL ŽfŦg ˆƒĸ\  ˆƒŽdŦe ˆƒ ?‡ ĩƒL¸ŽbŦc ˆƒ Æ ģƒ ˇ‚ ˆƒ ƒ *ƒ é‚ ;ƒL&ŽdŦe ˆƒ Æ ģƒŽ`Ŧa ˆƒŽ^Ŧ_ ˆƒŽ\Ŧ] ˆƒ Ū ĩƒĸ Lo†ĸ-  ˆƒĸ  ˆƒ `’ ¸ƒĸ  ‹… ˆƒ Œ ģƒ`ŽbŦc ˆƒĸ  ļ…ĐL°ŽbŦc ˆƒ Æ ģƒŽdŦe ˆƒĸ  ļ…ĐLÔŽdŦe ˆƒ Æ ģƒ ˛‚ ƒLo†`Š ]ƒ ˛‚ ˆƒĸ  რ„ ˆƒĸ  é‚ ˛‚ ˆƒĸ  რ„ ˆƒĸ Ō‚ ƒ é‚ ˛‚ ˆƒĸ  რ„ ˆƒĸ  é‚ ˛‚ ˆƒĸ  რ„ ˆƒĸ Ō‚ ƒ é‚ ˛‚ ˆƒĸ  რ„ ˆƒĸ  é‚ ˛‚ ˆƒĸ  რ„ ˆƒĸ  é‚ ˛‚ ˆƒĸ  რ„ ˆƒĸ  é‚ ˛‚ ˆƒĸ  რ„ ˆƒĸ  é‚ ˛‚ ˆƒĸ  რ„ ˆƒĸ  é‚ĸ  ˆƒ ˇ‚ ˆƒĸ Ō‚ ƒ ˆƒ Hˆ ĩƒŠ Eƒ`a/out-o-Rld: can't create %s ld: can't open %s usage: ld [-o outfile] [-R] file1 ... [filen] Šüĸ ˙ ô˙†ôŽ0ūĸ  ˆƒLVĒĸ  ‹…ŽbŒcĸ  ‹…ŽdŒe ˛‚ ƒ ˆƒĸ  ۅĐLL gĸų Ž\Œ]ĸ Ž^Œ_ĸ Ž`Œa ˇ‚ ƒ ˆƒĸ  რ„ ƒ ƒ ˆƒĸ˙  Q… ˆƒĸ-   …ĐLŗĸ˙  ˆƒ ŧ‚ *| Start C Shell *| Add rom number if needed: *| *srload () () (nitialise) (un) (

ause) */srload sh i *sh *| Start C Shell *| Add rom number if needed: *| *srload () () (nitialise) (un) (

ause) */srload s/* local.h - installation-dependant pathnames, etc. */ #ifndef __local_h #define __local_h /* Change the #defines in this file to specify where the Small-C compiler * system is installed. If the path "%" is available, pointing to the * library directory, then put the CLib directory in the library. If "%" * is not available, CLib should be put in the $ directory. */ /* as65 pathnames */ /* Suggested values: * DFS: * MNEMTAB ":0.$.mnemtab" * OPTAB ":0.$.optab" * If "%" is available: * MNEMTAB "%.CLib.mnemtab" * OPTAB "%.CLib.optab" * If "%" is not available * MNEMTAB ":.Library.CLib.mnemtab" * OPTAB ":.Library.CLib.optab" */ #define MNEMTAB "mnemtab" /* opcode mnemonics */ #define OPTAB "optab" /* opcode table */ /* tcc commands */ /* Suggested value: * DFS: * TCPP "tcpp" * TCCOM "tccom" * TCCOMC "tccom -C" * AS65 "as65 -o" * RM "rm -f" * LD "ld -o" * SWLD "ld -R -o" * If "%" is available: * TCPP "%.CLib.tcpp" * TCCOM "%.CLib.tccom" * TCCOMC "%.CLib.tccom -C" * AS65 "%.CLib.as65 -o" * RM "%.CLib.rm -f" * LD "%.CLib.ld -o" * SWLD "%.CLib.ld -R -o" * If "%" is not available * TCPP ":.Library.CLib.tcpp" * TCCOM ":.Library.CLib.tccom" * TCCOMC ":.Library.CLib.tccom -C" * AS65 ":.Library.CLib.as65 -o" * RM ":.Library.CLib.rm -f" * LD ":.Library.CLib.ld -o" * SWLD ":.Library.CLib.ld -R -o" */ #define TCPP "tcpp" #define TCCOM "tccom" #define TCCOMC "tccom -C" #define AS65 "as65 -o" #define RM "rm -f" #define LD "ld -o" #define SWLD "ld -R -o" /* tcc pathnames */ /* Suggested values: * DFS: * EXT ":0.$.ext/s :0.$.enter/s" * CRT ":0.$.crt" * SWEXT ":0.$.swext/s :0.$.enter/s" * SWCRT ":0.$.swcrt" * SCEXT ":0.$.swext/s :0.$.start/s" * COMP "compile" * EXEC "*exec compile" * If "%" is available: * EXT "%.CLib.ext/s %.CLib.enter/s" * CRT "%.CLib.crt" * SWEXT "%.CLib.swext/s %.CLib.enter/s" * SWCRT "%.CLib.swcrt" * SCEXT "%.CLib.swext/s %.CLib.start/s" * COMP "compile" * EXEC "*exec compile" * If "%" is not available: * EXT ":.Library.CLib.ext/s :.Library.CLib.enter/s" * CRT ":.Library.CLib.crt" * SWEXT ":.Library.CLib.swext/s :.Library.CLib.enter/s" * SWCRT ":.Library.CLib.swcrt" * SCEXT ":.Library.CLib.swext/s :.Library.CLib.start/s" * COMP "compile" * EXEC "*exec compile" */ #define EXT "ext/s enter/s" #define CRT "crt" #define SWEXT "swext/s enter/s" #define SWCRT "swcrt" #define SCEXT "swext/s start/s" #define COMP "compile" #define EXEC "*exec compile" /* tcpp pathnames */ /* Suggested values: * DFS: * INCLUDE ":0." * If "%" is available: * INCLUDE "%.CLib." * If "%" is not available * INCLUDE ":.Library.CLib." */ #define INCLUDE "" #endif /* local.h - installation-dependant pathnames, etc. */ #ifndef __local_h #define __local_h /* Change the #defines in this file to specify where the Small-C compiler * system is Small-C 'C' Compiler Tools -------------------------- Release 0.7 ----------- A.J.Travis 01-May-89 -------------------- -------------------------------------------------------------------------------- INDEX as65 cmp crt ctype demo diff errors get, put install ld lib lpr makefile [mktcc] rm sfa sh shar stdio sys tcc tccom tcpp unpack -------------------------------------------------------------------------------- NAME as65 SYNOPSIS as65 [-l] [-o outfile] file1 ... [filen] DESCRIPTION Assembler for the 6502 processor. This is a two pass assembler that processes the concatenation of source files given as command-line arguments. Local symbols are prefixed by tilde '~' and are not written to the global symbol output file. Mnemonics are lower-case, and are reserved symbols. Underline '_' is accepted as an alpha character in symbols. Assembly language routines may be called from Small-C programs, provided the Small-C parameter passing conventions are observed. In this implementation, parameters are always promoted to 16-bits with sign extension to the left and pushed on the data stack in 'reverse' order. In addition, the compiler prepends an underline '_' to the name of the Small-C function used to call the assembly language routine. The external symbols referring to code in the run-time support module, and BBC MOS are passed to the assembler by means of equate directives in the external symbol file 'ext/s' or 'swext/s'. If the Small-C 'end' symbols ~eot (end of text) and ~eod (end of data) are present, the size of the text and data segments are printed in decimal, followed by the assembly origin, ~eot, and ~eod values in hex. The assembler follows MOS Technology/Rockwell conventions. Consult the manufacturer's 6502 assembly language reference manual for more details. Options: -l produce assembly language listing -o name specify name of output file Note: The assembler can be used without an "optab" file in order to generate "optab" itself from .BYTE assembler pseudo-ops. In this situation a warning is issued, but the assembly continues. BUGS JMP expects a 16-bit destination, and JMP's into page zero are wrongly flagged as errors. This arises when the assembler origin is not set. Optab is needed because there is no simple way of initialising static data in the current version of tcc. Mnemtab is needed to pre-hash the mnemonics into the symbol table. FILES as65.c optab/s source code to generate optab :0.$.optab 6502 opcode table :0.$.mnemtab 6502 mnemonics o/out default output file g/out global symbol file -------------------------------------------------------------------------------- NAME cmp SYNOPSIS cmp file1 file2 DESCRIPTION Simple byte by byte file comparison. FILES cmp.c -------------------------------------------------------------------------------- NAME crt SYNOPSIS Stand-alone Small-C run-time support DESCRIPTION Large programs such as the compiler "tccom" require the Small-C language ROM/RAM image to be present, but smaller programs can be made 'stand-alone' using the -A option of "tcc". This loads the run-time support and compiler library in the default text area at $1900 in the i/o processor memory area, the usual MOS high water mark with just DFS fitted. The default load address is set to $1902 in order to avoid error messages from the BASIC language ROM which initialises the first two bytes of this area. BUGS The entire run-time support is loaded, even though a large part of it may never be referenced by the user program. A link editor is required. FILES mkcrt *exec file to assemble crt oshdr/s MOS entry points, and Small-C workspace definitions crt0/s stand-alone start-up code crt1/s JSR threaded code interpreter sys/s operating system interface lib/s part of the 'standard' C library patch/s control flow patch ext/s external symbol file used to link user programs enter/s entry point patch for user program -------------------------------------------------------------------------------- NAME ctype SYNOPSIS #include DESCRIPTION This is a dummy file in release 0.7 - the character classification table is defined in sys/s, and character classification routines are written in assembly language. BUGS Should be done with pre-processor macros ... FILES :0.$.ctype.h sys/s -------------------------------------------------------------------------------- NAME demo SYNOPSIS tcc -o bm bm/c tcc -o fahr fahr/c tcc -o hanoi hanoi/c tcc -o plot plot/c tcc -o sieve sieve/c DESCRIPTION Small-C demonstration programs: bm PCW Benchmarks fahr K & R tutorial example hanoi Towers of Hanoi (uses VDU mode 2) plot Recursive squares (uses VDU mode 2) sieve Sieve of Eratosthenes FILES :2.bm/c :2.fahr/c :2.hanoi/c :2.plot/c :2.sieve/c -------------------------------------------------------------------------------- NAME diff SYNOPSIS diff file1 file2 DESCRIPTION Line by line file comparison. BUGS Not really diff (as in Unix), but still useful. FILES diff.c -------------------------------------------------------------------------------- NAME errors SYNOPSIS Compiler error codes DESCRIPTION Brief explanation of compiler error codes. These have been deleted from the compiler to save space. BUGS There are errors in the errors ... FILES :0.$.errors list of error codes tccom.c source shows where errors are detected -------------------------------------------------------------------------------- NAME get, put SYNOPSIS *kermit take get *kermit take put DESCRIPTION Kermit 'take' files to download/upload "tcc" system from MSDOS host. Get "get" onto the BBC Micro first, then download the rest of the files automatically using the Kermit take command. The take files assume that the MSDOS kermit is in server mode, and the BBC Micro kermit is the 'local' kermit. BUGS DFS/ADFS attributes need to be set using "install" FILES get Kermit takefile install *exec file to set file attributes -------------------------------------------------------------------------------- NAME getshar SYNOPSIS *kermit take getshar DESCRIPTION Kermit 'take' file to download "tcc" system from remote host. Get "getshar" onto the BBC Micro first, then download the rest of the files automatically using the Kermit take command. The take files assume that the MSDOS kermit is in server mode, and the BBC Micro kermit is the 'local' kermit. The shell archives are unpacked using the "unpack" command. BUGS "getshar" assumes that two disk drives are available. FILES getshar Kermit takefile unpack *exec file to unpack shell archives -------------------------------------------------------------------------------- NAME install SYNOPSIS exec install DESCRIPTION Utility to set file attributes after downloading binaries with Kermit from MSDOS host. BUGS Language ROM/RAM image must already be loaded. FILES sfa executable binary of utility to set file attributes swcrt Language ROM/RAM image -------------------------------------------------------------------------------- NAME ld SYNOPSIS ld [-o outfile] [-R] file1 ... [filen] DESCRIPTION Simple loader for stand-alone binaries, and ROM images of Small-C programs. No link editing is done: the loader simply concatenates the binaries given as arguments with the appropriate run-time support. All external references are resolved by the assembler, using the external symbol file "ext/s" or "swext/s". Options: -o outfile specify name of output file -R load sideways ROM/RAM image BUGS The order of files in the argument list is critical, and relocation is impossible because the assembler produces absolute binary modules. FILES a/out default output file crt stand-alone run-time support swcrt sideways ROM/RAM run-time support -------------------------------------------------------------------------------- NAME lib SYNOPSIS tcc -S lib.c exec mkcrt exec mkswcrt DESCRIPTION Small-C compiler library. A few of the 'standard' C library routines have been implemented: atoi(s) fclose(fp) fgets(s, n, fp) fopen(name, mode) fprintf(fp, fmt, arg) fputs(s, fp) fscanf(fp, fmt, arg) gets(s) itoa(s, radix) printf(fmt, arg) puts(s) scanf(fmt, arg) sscanf(s, fmt, arg) sprintf(s, fmt, arg) strcat(s1, s2) strcmp(s1, s2) strcpy(s1, s2) strlen(s) strncat(s1, s2, n) strncmp(s1, s2, n) strncpy(s1, s2, n) BUGS There are lots more functions to implement ... FILES lib/c Small-C source lib/s assembly language file used to create "crt" and "swcrt" -------------------------------------------------------------------------------- NAME lpr SYNOPSIS lpr [-p] file DESCRIPTION Expands tabs into spaces (for printers that can't handle tabs), and paginates output if required. Output is directed to the screen and printer simultaneously using the MOS VDU driver to enable the printer. Options: -p paginate output, and print header at top of page. BUGS It's not a spooler - you have to wait until the printer stops. FILES lpr.c -------------------------------------------------------------------------------- NAME makefile [mktcc] SYNOPSIS make host make DESCRIPTION Zorland 'C' makefile for the MSDOS version of the "tcc" compiler. The "host" target generates *.exe files for the MSDOS host system, and the default target generates 6502 binaries to be downloaded onto a BBC Micro using Kermit. BUGS There is no Small-C make utility. FILES makefile -------------------------------------------------------------------------------- NAME rm SYNOPSIS rm [-f] file1 [... filen] DESCRIPTION Remove the list of files given as arguments. Options: -f force removal, even if file is locked, and don't complain about non-existent files BUGS Wild cards are not expanded. FILES rm.c -------------------------------------------------------------------------------- NAME sfa SYNOPSIS sfa file DESCRIPTION Set file attributes. The load and execute addresses are both set to $1902. BUGS Can't specify load and exec addresses as arguments. The file access attributes are correct for ADFS, but set the "lock" attribute in DFS. FILES sfa.c -------------------------------------------------------------------------------- NAME sh SYNOPSIS *sh DESCRIPTION Small-C command "shell". This is the Small-C Language ROM/RAM image that must be present in order to use the "tcc" compiler. The *sh entry into the Small-C Language ROM/RAM allows control to fall through to code immediately after the run-time support. This entry is patched to main() in the command shell by the -R option of "tcc": tcc -o sh -R sh/c The '*' in "*sh" is used by Basic to pass a command line to the MOS OSCLI (operating system command line interpreter). This is necessary when invoking Small-C from Basic or View, but is not required when programs or operating system commands are invoked from the Small-C command shell. The shell implements a 'mode' command to change mode. Shadow screen modes are always selected if possible. Additionally, if a command if prefixed by '*' then the 'C' escape handler is temporarily disabled for the execution of the command. This is the correct way to exit the shell - use, for example, '*basic' or '*word', not 'basic' or 'word'. On return to the shell any return value is osbyte 1 set by an executed command is displayed. BUGS Global variables should not be used in programs produced with the -R option because the compiler places data immediately after the program text in what would then be read-only memory. FILES swcrt Sideways ROM/RAM run-time support sh.c Small-C command shell -------------------------------------------------------------------------------- NAME shar SYNOPSIS shar [-a] [-x] archive file1 [... filen] DESCRIPTION Unix style shell archiver for e-mail distribution of tcc system. The "archive" argument specifies the name of the archive file to be used. Note: only text files can be archived with shar. Options: -a create archive and add files -x extract file from archive BUGS Individual files cannot be extracted from an archive. The entire contents of an archive are extracted. FILES shar.c -------------------------------------------------------------------------------- NAME stdio SYNOPSIS #include DESCRIPTION 'Standard' i/o header file. Contains standard i/o channel definitions, and the macro definitions of putchar() and getchar(). #define BUFSIZ 256 /* size of disk i/o buffer */ #define NULL 0 /* null pointer of any type */ #define EOF (-1) /* end-of-file 'value' */ #define stdin 0 /* standard (console) input stream */ #define stdout 1 /* standard (console) output stream */ #define stderr 2 /* standard (console) error stream */ #define FILE int /* no structures in Small-C ... */ #define unsigned char * /* no unsigned type in Small-C ... */ #define getchar() getc(stdin) #define putchar(x) putc(x, stdout) BUGS The FILE typedef cannot be implemented properly in Small-C, but the i/o streams are used as if they are implemented as (FILE *) to make Small-C a legal subset of full 'C'. This is ok if no reference is made to the FILE structure other than its use to identify a stream in the 'f' i/o library (eg. fprintf()). FILES :0.$.stdio/h -------------------------------------------------------------------------------- NAME sys SYNOPSIS Operating system interface DESCRIPTION The interface between Small-C and the underlying BBC Micro Machine Operating System (MOS) is written in assembly language. The entry points for low-level file i/o are modelled on their Unix counterparts, and the character classification routines are written in assembly language to increase their speed of execution. Interfaces are also provided to the MOS osbyte 'fx' (effects), osword and osfile calls. Entry points: Assembler Small_C _open fd = open(name, rwmode); _creat fd = creat(name, pmode); _close status = close(fd); _unlink status = unlink(name); _stat stat(name, fcb); _system system(string); __cmdlin address = _cmdline() _read nread = read(fd, buf, count); _write nwritten = write(fd, buf, count); _getc c = getc(fp); _putc putc(c, fp); _vdu vdu(c); _osbyte osbyte(type, parameters); _osword osword(type, address); _osfile osfile(name, fcb, type); _isalpha t = isalpha(c); _isupper t = isupper(c); _islower t = islower(c); _isdigit t = isdigit(c); _isxdigi t = isxdigit(c); _isspace t = isspace(c); _ispunct t = ispunct(c); _isalnum t = isalnum(c); _isprint t = isprint(c); _iscntrl t = iscntrl(c); _isascii t = isascii(c); _toupper c2 = toupper(c1); _tolower c2 = tolower(c1); _toascii c2 = toascii(c1); _ctype_ char ctype_[127]; BUGS File descriptors (fd) are used instead of (FILE *) for getc(), and putc() as in the rest of Small-C. Pmode is ignored by creat(), and the system has no record of which files were opened by the user. This means that programs must explicitly close files that they open (full 'C' will normally close files opened by the user on exit). The character classification routines should be macros that use conditional expressions. "System" doesn't spawn a new process, it just passes the line to the MOS command line interpreter (CLI). FILES sys/s ext/s stand-alone entry points swext/s sideways ROM/RAM entry points -------------------------------------------------------------------------------- NAME tcc SYNOPSIS tcc [-o outfile] [-n] [-E] [-S] [-c] [-g] [-R] [-A] [-C] file DESCRIPTION This is the Small-C compilation sequencer. It arranges the various phases of the preprocessor "tcpp", compiler "tccom", assembler "as65" and loader "ld" according to a list of command-line arguments. The sequencer generates a *exec file on the BBC, or a *.bat file in the MSDOS version, which is then executed to carry out the compilation. By default, the compiler produces ROM-dependant code which makes external references into the Small-C language ROM. Options: -o outfile specify name of output file (default a/out) -n don't execute *exec (*.bat) file -E run preprocessor only (no compilation) -S generate an assembly language output file -c suppress load phase -g keep the global symbol output file "g/out" -R produce ROMable code -A produce 'stand-alone' code -C insert 'C' source as comments BUGS The technique of generating a *exec file is a crude alternative to the creation of child processes to carry out the compilation tasks. This could be done in the MSDOS version, but requires much more effort under the Acorn MOS. For simplicity, I have used the same technique in both. Only one source file can be processed in this version, but the #include preprocessor directive can be used to combine several *.c files. FILES tcc/c tcpp Small-C preprocessor tccom Small-C compiler as65 6502 assembler rm file remover ld Small-C loader :0.$.crt Stand-alone run-time support, and compiler library :0.$.swcrt Sideways ROM/RAM run-time support, and compiler library :0.$.ext/s Stand-alone external references :0.$.swext/s Sideways ROM/RAM external references :0.$.start/s ROM-dependant startup code :0.$.enter/s Control-flow patch to main() from user entry point compile *exec file produced by sequencer -------------------------------------------------------------------------------- NAME tccom SYNOPSIS tccom [-C] infile [outfile] DESCRIPTION Tiny 'C' compiler for the MOS Technology 6502 microprocessor, based on "RatC", Berry and Meeking's version of the original Small-C compiler for the Intel 8080 by Ron Cain. The main difference between RatC and Ron Cain's Small-C is the use of a generic processor model with two working registers instead of 8080 architecture. Otherwise, the two compilers are almost identical. The compiler (tccom) is normally invoked by a compilation sequencer (tcc), which arranges the various phases of the pre-processor, compiler, assembler amd loader. The language features supported by "tccom" are essentially the same as those supported by "RatC", with more complete flow-control, and character escape sequences implemented. Code generation is 'optimised' for the 6502 in a 'small' machine environment on the BBC Micro. The basic strategy is to generate code for a JSR threaded code interpreter, but whenever possible the contents of the 'C' primary register are kept in the 6502 X and Y registers. Two stacks are used: the 6502 hardware stack is used as the 'C' return stack and is used by the JSR threaded code interpreter, but the 'C' data stack is implemented in high memory using page-zero locations as a stack pointer. This allows 'C' function stack-frames to be realistically large (the 6502 hardware stack is limited to 256 bytes in page 1). As with other implementations of Small-C, the language features supported are a (severely) restricted subset of full 'C' but I have made an effort to implement a legal subset that can be compiled with little or no modification by a full 'C' compiler. Consult the "Small-C Handbook" by James.E.Hendrix for a more complete description of the language. Briefly, the features implemented in "tcc" are: Options: -C output source code as assembler comments Types: char 8-bit (signed) promoted to int in expressions char[n] 8-bit (signed) promoted to int in expressions char * 16-bit (unsigned) int 16-bit (signed) int[n] 16-bit (signed) int * 16-bit (unsigned) extern accepted, but ignored by compiler int function() int *function() char function() char *function() Operators: = assignment (low precedence) | bitwise OR ^ bitwise XOR & bitwise AND == relational equal != relational not equal <= relational less-than or equal >= relational greater-than or equal >> bitwise right shift << bitwise left shift + arithmetic add - arithmetic subtract * arithmetic multiply / arithmetic divide (integer) % arithmetic remainder (integer) - arithmetic negation * pointer indirection & address of object ++ arithmetic increment -- arithmetic decrement f() function call a[] array subscript (high precedence) Function calls: direct: function(args); indirect: char *address; address = &function; address(args); Control-flow: goto label ... label: if (expression) { ... } else { ... } while (expression) { ... } do { ... } while (expression); for (expression; expression; expression) { ... } Literal numbers: ddddd decimal (where d is 0...9) 0ddd octal (where d is 0...7) 0xdddd hexadecimal (where d is 0...F or 0...f) Character escapes: \n newline \t tab \b backspace \r return \f form feed \\ backslash \0 NULL \ddd octal character code \c any other character (where c is the character) BUGS Arrays of character pointers are (incorrectly) treated as arrays of integers. This leads to problems recovering command line options prefixed by '-'. The fix is to AND with 0xFF, and various programs are commented "BUG in compiler" where this is a problem. The code to implement "for" fails on the commonly used construct "for (;;)" which is used in 'endless' loops, and the code generated to implement "for" needs the entire expression on one line of the input stream. The same is true for function calls, where the entire argument list must be on one line. The analysis of the "for" construct is clumsy, and needs re-writing to jump round the end loop action, rather than deferring code generation which is used at present. The "switch" construct has not yet been implemented. FILES tccom.c -------------------------------------------------------------------------------- NAME tcpp SYNOPSIS tcpp [-Dname] infile outfile DESCRIPTION Small-C preprocessor, with file inclusion and conditional compilation directives. The #asm ... #endasm directive found on other Small-C preprocessors is deliberately omitted because it leads to non-portable code. Assembly language routines are incorporated in Small-C programs by combining them with the assembler source generated by the compiler, during assembly of the program. This allows machine dependencies to be hidden from an applications program. The preprocessor implements a subset of the Unix 'C' preprocessor "cpp": File inclusion: #include file in 'standard' directory #include "file" file in current directory Macro replacement: #define name #define name(args) Conditional text inclusion: #if constant test for non-zero constant ... #else ... #endif #ifdef name test for defined macro name ... #else ... #endif #ifndef name test for undefined macro name ... #else ... #endif Options: -Dname #define name on command line BUGS Constant expressions cannot be used (as in #if expression), and the newline escape '\' is not implemented in macro definitions which must, therefore, be confined to a single line of text. FILES tcpp/c :0.$ 'standard' directory for #include :0.$.stdio/h 'standard' i/o #include file :0.$.ctype/h dummy character classification #include file -------------------------------------------------------------------------------- NAME unpack SYNOPSIS exec unpack DESCRIPTION The BBC Micro version of tcc is distributed over e-mail or BBSs as a collection of Unix 'shell' archives. This is a convenient format for packaging up several files, and protecting them from e-mail systems that occasionally interpret parts of unprotected files as message headers. This may cause the file to be corrupted, or it may fail to arrive. The archive files should be downloaded onto a BBC Micro as indicated in the FILES section below. An example kermit take file is provided, or the files can be downloaded individually. The unpack utility assumes that you have a two-drive system. The 6502 binaries of the Small-C Language ROM and "shar" program must first be de-hexed and the "sh" file loaded into sideways RAM. The unpack script uses the "shar" program to extract the other hexfiles from tcc1 and tcc2. These are dehexed, and the remaining source files are extracted. The resulting disk contains the complete tcc source distribution. Make a copy of the disk before attempting to use the compiler, and delete some of the source files to make room for temporary files created by the compiler. BUGS It takes a l o n g time to extract the files. FILES :0.getshar kermit take file to download shell archives :0.mkboot *exec file to dehex Small-C boot files :0.sh/x 6502 hex file of Small-C Language ROM/RAM image :0.dehex/x 6502 hex file of Intel hex decoder :0.shar/x 6502 hex file of shell archive program :1.unpack *exec file to unpack archives :1.tcc1 shell archive #1 :1.tcc2 shell archive #2 :3.tcc3 shell archive #3 :3.tcc4 shell archive #4 :2.READ/ME tcc documentation -------------------------------------------------------------------------------- Small-C 'C' Compiler Tools -------------------------- Release 0.7 ----------- A.J.Travis 01-May-89 -------------------- -------------------------| > mkall | Recompile all compiler programs | Start in source directory | | Select small memory screen mode mode 7 | Set library Lib ^ | Compile programs tcc -o Nas65 as65/c tcc -o Ntcc tcc/c tcc -o Ntcpp tcpp/c | Tidy up delete compile | Delete old programs access ^.tcpp delete ^.tcpp access ^.tcc delete ^.tcc access ^.as65 delete ^.as65 | Rename newly compiled programs rename Nas65 ^.as65 rename Ntcc ^.tcc rename Ntcpp ^.tcpp | Reset library Lib $.Library | Put a copy of tcc in the system library | non-ADFS syntax: copy ^.tcc $.Library.tcc | ADFS syntax: copy ^.tcc $.Library | All done. | > mkall | Recompile all compiler programs | Start in source directory | | Select small memory screen mode mode 7 | Set library Lib ^ | Compile programs tcc -o Nas| Recompile compiler programs on DFS disk | Start in :0.$ directory | | Select small memory screen mode mode 7 | Compile programs tcc -o Ntcpp :2.tcpp/c tcc -o Ntcc :2.tcc/c tcc -o Nas65 :2.as65/c | Tidy up delete compile | Delete old programs access tcpp delete tcpp access tcc delete tcc access as65 delete as65 | Rename newly compiled programs access Ntcc rename Ntcc tcc access Ntcpp rename Ntcpp tcpp access Nas65 rename Nas65 as65 | All done. | Recompile compiler programs on DFS disk | Start in :0.$ direadc and asl bcc bcs beq bit bmi bne bpl brk bvc bvs clc cld cli clv cmp cpx cpy dec dex dey eor inc inx iny jmp jsr lda ldx ldy lsr nop ora pha php pla plp rol ror rti rts sbc sec sed sei sta stx sty tax tay tsx txa txs tya adc and asl bcc bcs beq bit bmi ˙˙ieu˙m}yaq˙˙˙˙)%5˙-=9!1˙˙˙ ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙°˙˙˙˙˙˙˙˙˙˙˙˙đ˙˙˙˙$˙˙,˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙0˙˙˙˙˙˙˙˙˙˙˙˙Đ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙P˙˙˙˙˙˙˙˙˙˙˙˙p˙˙˙˙˙˙˙˙˙˙˙˙˙Ø˙˙˙˙˙˙˙˙˙˙˙˙X˙˙˙˙˙˙˙˙˙˙˙˙¸˙˙˙˙˙˙˙˙˙˙˙˙˙˙ÉÅÕ˙ÍŨŲÁŅ˙˙˙˙āä˙˙ė˙˙˙˙˙˙˙˙ĀÄ˙˙Ė˙˙˙˙˙˙˙˙˙ÆÖ˙ÎŪ˙˙˙˙˙Ę˙˙˙˙˙˙˙˙˙˙˙˙ˆ˙˙˙˙˙˙˙˙˙˙˙˙˙˙IEU˙M]YAQ˙˙˙˙˙æö˙îū˙˙˙˙˙č˙˙˙˙˙˙˙˙˙˙˙˙Č˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙L˙˙˙˙˙l˙˙˙˙˙˙ ˙˙˙˙˙˙˙˙ŠĨĩ˙­ŊšĄą˙˙˙˙ĸĻ˙ļŽ˙ž˙˙˙˙˙˙ ¤´˙Ŧŧ˙˙˙˙˙˙J˙FV˙N^˙˙˙˙˙ę˙˙˙˙˙˙˙˙˙˙˙˙˙˙ ˙ ˙˙H˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙h˙˙˙˙˙˙˙˙˙˙˙˙(˙˙˙˙˙˙˙˙˙˙˙˙˙*˙&6˙.>˙˙˙˙˙˙j˙fv˙n~˙˙˙˙˙@˙˙˙˙˙˙˙˙˙˙˙˙`˙˙˙˙˙˙˙˙˙˙˙˙˙˙éåõ˙íũųáņ˙˙8˙˙˙˙˙˙˙˙˙˙˙˙ø˙˙˙˙˙˙˙˙˙˙˙˙x˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙…•˙™‘˙˙˙˙˙†˙–Ž˙˙˙˙˙˙˙˙˙„”˙Œ˙˙˙˙˙˙Ē˙˙˙˙˙˙˙˙˙˙˙˙¨˙˙˙˙˙˙˙˙˙˙˙˙ē˙˙˙˙˙˙˙˙˙˙˙˙Š˙˙˙˙˙˙˙˙˙˙˙˙š˙˙˙˙˙˙˙˙˙˙˙˙˜˙˙˙˙˙˙˙˙˙˙˙˙˙˙ieu˙m}yaq˙˙˙˙)%5˙-=9!1˙˙˙ ˙˙˙˙˙˙˙˙ Small-C compiler for the BBC Micro Release 0.71 A.J.Travis 01-May-89 INTRODUCTION Small-C is a subset of the C programming language for which a number of public-domain compilers have been written. The original compiler was written by Ron Cain and appeared in the May 1980 issue of Dr.Dobb's Journal. More recently, James E.Hendrix has improved and extended the original Small-C compiler and published "The Small-C Handbook", ISBN 0-8359-7012-4 (1984). Both compilers produce 8080 assembly language, which is the most popular implementation of Small-C to-date. My 6502 Small-C compiler for the BBC Micro is based on "RatC", a version of the original Ron Cain compiler described by R.E.Berry and B.A.Meekings in "A Book on C", ISBN 0-333-36821-5 (1984). The 6502 compiler is written in Small-C and was bootstrapped using Zorland C on an Amstrad PC1512 under MSDOS 3.2, then transferred onto a BBC Micro using Kermit. The compiler can be used to cross-compile 6502 code from an MSDOS host, or as a 'resident' Small-C compiler on a BBC Micro. DEVELOPMENT I started to implement a Small-C compiler for the BBC Micro in 1985 because I wanted an alternative to assembly language or Forth for writing 6502 image processing software. I was very impressed by the performance and portability of Forth, but found the language difficult to use. I was aware that a sub-set of Pascal had been implemented in Forth, and I set about developing my own version. However, I quickly realised that the virtues of using a threaded-code interpreted language (TIL) could be exploited just as easily by generating code for an interpreter conventionally, instead of using Forth itself to generate a 'target' vocabulary. I began to use 'C' and Unix on a DEC pdp11 at the time and I decided to implement a sub-set of C, instead of Pascal, on the BBC Micro after reading "The Small-C Handbook" by Hendrix and "A Book on C" by Berry and Meekings. I began by implementing "Rat-C" under Unix on the pdp11. The Rat-C compiler is much smaller than the Hendrix compiler, and it also produces 'generic' assembly code. I wrote a translator for the generic code output by RatC, which generated 'JSR-threaded' code for the 6502. A JSR-threaded code interpreter is a form of TIL that uses the hardware call-return mechanism of the processor as the low-level interpreter and is the most efficient way of implimenting a TIL. The code generated was too verbose to produce a resident Small-C on the BBC Micro with only 29K of usable memory in mode 7, but I was able to develop the run-time support for the threaded-code interpreter and code generation model for the 6502. Because of the severe memory constraints of a 'standard' BBC Micro, I decided to translate Rat-C into BBC BASIC in order to produce a resident Small-C compiler that would run in 29K. This 'tiny' C compiler ("tcc") in BBC BASIC was intended to be a 'bootstrap' for a Small-C version of the 6502 compiler, and I began distributing copies of the Small-C to friends and colleagues. Eventually, I sent a copy of the compiler to Chris Adie at Edinburgh University Micro Support Unit, and later to Alan Philips at the Lancaster University Micros Software Distribution Service. After several more releases of the "tcc" compiler, I was approached by John Evans of Mijas software for permission to sell the Small-C as part of his 6502 assembly language development system. I was pleased to give Mijas permission to use my code, which they have adapted for use with the Mijas 6502 symbolic debugger. I continued to develop the 6502 Small-C by optimising the code-generator for the 'small-machine' environment of the BBC Micro and, during this development, I replaced my earlier BBC BASIC programs with Small-C versions. Finally, I have produced a resident Small-C for the BBC Micro that can also be used as a cross compiler for the 6502 on an MSDOS host. RELEASES 0.10 Jan-1986 Original version 0.20 Apr-1986 Limited distribution 0.30 Jul-1986 Sent to Chris Adie at ERCC 0.40 Oct-1986 First version sent to 0.41 Oct-1986 Bug-fix release 0.50 Dec-1986 First version used by Mijas 0.51 Apr-1987 Limited distribution 0.60 Jul-1988 First DOS cross-compiler 0.61 Dec-1988 BBC Micro/Master language ROM 0.70 Apr-1989 Current release 0.71 Jul-1990 Bug in shell ROM fixed 0.72 Jun-2005 String buffer increased in printf() family CHANGES FROM RELEASE 0.5 Release 0.6 of the 6502 Small-C compiler was cross-compiled on an MSDOS host and has been modified to avoid major incompatibilities with full 'C'. Previous BASIC programs, including the compiler itself, have been re-written in Small-C. The Zorland C compiler objects to many of the 'liberties' I have taken with full 'C' usage, but compiles the Small-C programs correctly. An MSDOS distribution is also available containing executable binaries of the Small-C compiler and 6502 assembler. Release 0.61 was a bug-fix release with corrected sideways ROM startup code and corrections to the "shar" program for extracting shell archives. The formatted input functions atoi(), scanf(), fscanf() and sscanf() have been added to the compiler library in this release, and I have fixed a bug in "as65" which failed to detect certain illegal expressions in opcode operands. The Small-C release 0.70 language ROM works correctly on a BBC Master, and several minor bugs have been fixed in the run-time library. Version 0.70 is the first version in which the Small-C command shell is used to compile and run C programs. I have also adopted lower-case mnemonics for the 6502 assembler, and extended the range of pre-processor directives supported by "tcpp". ACKNOWLEDGEMENTS I am grateful to Jon Welch, and Dave Prosser from the Department of Electronic Engineering at Bradford University who weeded out many of the bugs in release 0.41 of the compiler. I am also grateful to Alan Philips at Lancaster University, and Rob McRon at Edinburgh University for their help in distributing the compiler over electronic mail networks. A version of this compiler is distributed, with my permission, by Mijas Software as part of a 6502 assembly language development system for the BBC Micro. I would like to thank John Evans of Mijas for his interest in the compiler which he has extended and adapted for use with the Mijas 6502 symbolic debugger. COPYRIGHT The programs in this distribution remain copyright (c) 1989 A.J.Travis, and should not be used for any commercial purpose without prior consent in writing. The programs may be copied and further distributed for non-commercial use without restriction, provided a copy of this notice is also included. REQUIREMENTS The "tcc" Small-C compiler requires a 'standard' BBC Micro or BBC Master and a twin double sided 80-track disk drive in order to recompile itself. The run-time support routines and compiler library are contained in a Small-C language ROM/RAM image that must be present in order to use the compiler, but stand-alone versions of programs are readily produced using a compiler option. Source programs are edited using Acornsoft VIEW or a similar editor, and any machine code monitor/debugger can be used on the object programs produced. INSTALLATION The following installation instructions are superceed by those in the file Install. They have been kept within the documentation as part of the original distribution. [JGH] ------------------------------------------------------------------------ AVAILABILITY Send an SAE and Acorn DFS formatted, double-sided 80 track 5.25" floppy (or 360K DOS formatted, 5.25" floppy for the MSDOS version). Alternatively, mail me as for an e-mail version. Home address: Work address: 1 St. Nathalan Crescent, Rowett Research Institute, Banchory, Greenburn Road, Kincardineshire. Bucksburn, AB3 3YU Aberdeen. AB2 9SB tel. Banchory 2392 tel. Aberdeen 712751 x134 DOWNLOADING SHELL ARCHIVES Several people have reported difficulty in downloading the BBC Micro Small-C as Unix 'shell' archives. These are simply a convenient way of distributing programs over e-mail networks and BBSs. The "unpack" utility is intended to simplify the task of unpacking the archives after downloading them onto BBC Micro disks. Two blank formatted 80-track disks are required to download and unpack the archives. First, download the kermit takefile "getshar" onto drive 0: and use it to download the shell archives: > ; BASIC prompt > *xoff ; disable ARIES B32 shadow RAM > ; press break key > *rload kermit 13 ; load kermit ROM image in slot 13 > ; initialise ROM > *kermit ; invoke kermit BBC> ; kermit prompt BBC> set file type ascii cr ; setup for ascii transfer BBC> get getshar getshar ; transfer kermit take file "getshar" BBC> take getshar ; transfer shell archives BBC> *basic ; return to BASIC > ; BASIC prompt UNPACKING SHELL ARCHIVES After downloading the shell archives, the Small-C ROM must be bootstrapped, and the compiler programs must be 'unpacked' before they can be used: > ; BASIC prompt > *exec mkboot ; dehex Small-C ROM, and utils > *rload sh 14 ; load Small-C ROM image in slot 14 > ; initialise ROM > *sh ; invoke tcc command shell $ ; Small-C prompt $ exec :1.unpack ; unpack shell archives $ access *.* L ; lock all files for safety DOWNLOADING TCC FROM AN IBM-PC HOST The MSDOS version of the compiler is distributed via e-mail as 'boo' encoded archives which must be downloaded onto an IBM-PC or compatible micro. The files are then unpacked using the 'deboo' and 'arc' utilities (available from Lancaster PDSoft distribution service). The MSDOS version of the compiler can then be used to cross-compile code for a BBC Micro. The DFS version of the compiler was cross-compiled on an Amstrad PC-1512, then transferred to a BBC Micro fitted with an Aries B32 RAM board using the following commands: > ; BASIC prompt > *xoff ; disable ARIES B32 shadow RAM > ; press break key > *rload kermit 13 ; load kermit ROM image in slot 13 > ; initialise ROM > *kermit ; invoke kermit BBC> ; kermit prompt BBC> set file type ascii cr ; setup for ascii transfer BBC> get get get ; transfer kermit take file "get" BBC> take get ; transfer tcc files BBC> *basic ; return to BASIC > ; BASIC prompt DFS INSTALLATION After downloading a copy of the DFS distribution disk from an MSDOS host, the compiler programs must be 'installed' before they can be used: > ; BASIC prompt > *rload sh 14 ; load Small-C ROM image in slot 14 > ; initialise ROM > *sh ; invoke tcc command shell $ ; Small-C prompt $ mode 7 ; set vdu mode 7 $ exec install ; set executable file attributes $ access *.* L ; lock all files for safety INITIAL SETUP The system is distributed in DFS format, for use on a 'standard' BBC Micro, but can be used under ADFS without modification. Source programs are edited (using VIEW or whatever editor you have), and saved to disk. The restricted number of files in the DFS catalogue means that sources are normally saved in ":2.*/c", and the distributed sources can be found on side 2 of the disk. The distribution disk is FULL, and needs to be reorganised in order to use the compiler. Side 0 of the disk contains the executable binaries, #include and Small-C language ROM/RAM image. These files must always be present in drive 0. The files on side 2 must be copied to other disks in order to recompile the programs. The compiler program "tccom", in particular, needs a disk to itself in order to recompile ... Error recovery is virtually non-existent, and DFS "can't extend" problems should be avoided by periodically *compacting the disks. EXAMPLE PROGRAM The "Towers of Hanoi" example can be compiled using the distribution disk in BBC drive 1/3, and a blank formatted working disk in drive 0/2 as follows: > ; BASIC prompt > *drive 0 ; select drive 0 on distrib. disk > *xoff ; disable ARIES B32 shadow RAM > *rload sh 14 ; load Small-C ROM image in slot 14 > ; initialise ROM > *sh ; invoke tcc command shell $ copy 1 0 *.* ; copy 'system' files onto working disk $ copy 3 2 hanoi/c ; copy example source file $ drive 2 ; select drive 2 on working disk $ mode 7 ; set vdu mode 7 $ tcc -o hanoi hanoi/c ; compile example $ mode 2 ; set vdu mode for "hanoi" $ hanoi ; run program $ mode 7 ; reset vdu mode $ basic ; return to BASIC > ; BASIC prompt See the description of each utility program for a detailed explanation of how to use them. The Small-C sources are intended to be examples of how to use the language - if you need more help than this, consult the excellent "Small-C Handbook" by James E. Hendrix. There are also numerous Small-C programs available from the CP/M user group. Small-C compiler for the BBC Micro Release 0.71 A.J.Travis 01-May-89 INTRODUCTION Small-C is a subset of the C programming language for which a number of public-domain compilŠüĸ ˙ ô˙†ôŽ0ūĸ  ˆƒLVĒ ˛‚ ƒ ˆƒĸ   …ĐL?ĸ  ‹… ˆƒ V ģƒĸ ŽŒ ˇ‚ ƒ ˆƒĸ  რ„ ƒ ƒ ˆƒĸ˙  Q… ˆƒĸ-   …ĐLųĸt  ˆƒ ŧ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐLÅŽŦ %ƒŽŒ 4ƒLÕĸ  ‹… ˆƒ V ģƒ ˛‚ ˆƒ ƒ 4ƒ é‚ ˇ‚ ˆƒ ƒ *ƒ é‚ ;ƒLI ˛‚ ˆƒ ƒ 4ƒ é‚ ˆƒĸ  ļ…ĐL{ŽŦ ™…ĐLG ˇ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ ‚ ģƒLf ˇ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ / ģƒ ˇ‚ ˆƒ ƒ *ƒ é‚ ;ƒLųĸ Lo†ĸü  ˆƒ ˇ‚ ƒ ˆƒ ㆠ¸ƒ ˆƒĸ   …ĐL.ĸü  ˆƒĸ  რ„ ƒ ˆƒĸ  Q… ™…ĐL.ĸü  ˆƒĸ  რ„ ˆƒĸü  ˆƒĸ  რ„ ƒ ˆƒĸw  Q… é‚ĸ  ˆƒĸü  ˆƒ ŧ‚ ƒ ˆƒ Hˆ ĩƒ ˛‚ ƒ ˆƒ Ά ģƒ`ĸü  ˆƒ ˇ‚ ƒ ˆƒ ㆠ¸ƒ ˆƒĸ  Ģ…ĐLt ˛‚ ƒ ˆƒĸw  ˆƒĸ  ˆƒ `’ ĩƒLUĸü  ˆƒĸ  რ„ ƒ ˆƒĸ  Q… ™…ĐLōĸü  ˆƒĸ  რ„ ƒ ˆƒĸˆ  Q… ™…ĐLā ˛‚ ƒ ˆƒĸ‰  ˆƒĸ  ˆƒ `’ ĩƒLī ˛‚ ƒ ˆƒ Ά ģƒLUĸü  ˆƒĸ  რ„ ƒ ˆƒĸ  Q… ™…ĐL8 ˛‚ ƒ ˆƒĸŖ  ˆƒĸ  ˆƒ `’ ĩƒLU ˛‚ ƒ ˆƒĸ  ˆƒĸ  ˆƒ `’ ĩƒ`ĸÚ  ˆƒĸ  ˆƒ `’ ¸ƒ ˛‚ ƒLo†`-frm: %s not found rm: %s permission denied rm: can't remove directory %s rm: %s file type error usage: rm [-f] file1 ... [filen] Šüĸ ˙LāLÂ#Small-C0.72 (23 Jun 1991)(C)1989 A.J.TravisNAME sh - Small-C command shell SYNOPSIS *sh DESCRIPTION Sideways ROM/RAM version of Small-C run-time support, and tcc library. *sh invokes an interactive shell. AUTHOR A.J.Travis H˜HŠHēŊÉĐ"ĸŊj€ŅōđI ŅōĐ É đČčLLžŠŽĻôLô˙É Đō į˙ąōÉ Đ@ĸŊ €đ î˙čLEŠ î˙ĸŊ€đ É đ î˙čLX į˙Š î˙ î˙ĸŊj€ ã˙čÉ ĐõLžĸŊj€É đŅōđI ŅōĐ(ČčL… Š7…xŠ€…yąxđ ã˙æxĐõæyLĨ į˙ēŠhĒh¨h`Ѝĸ ˙ ô˙†x„y Š&‘xČŠ‚‘xČĨô‘x 0ŠC‘xČŠ†‘xČĨô‘xŠŠ˙Š0 Š˙!Šĸ ô˙XØĸ˙šŠHŠÃHē†~Š„ ô˙†|„}L…Ŧ ąũđ î˙ČL(‚ į˙Lā…†p„q į˙ ē ‚ŊŧĒ ‚Ļp¤q ‚Ļt¤u ‚Ļx¤y ‚Ļ|¤} ‚ ą|ĒČą|¨ ‚ĨĻp¤q`˜ ‚Š ‚Š î˙`HJJJJ œ‚h œ‚`)É 0ii0Lî˙ ˙` `Ļ|¤}`ĸLŌ‚ĸLŌ‚ĸLŌ‚ĸLŌ‚ĸ LŌ‚ĸ  Še|ǘe}¨` Ŗƒ Š‘tLĒ‚ Ŗƒ„q Š‘tČĨq‘t¨`†p„q ąpĒLĒ‚†p„q ąpĒČąp¨` ą|…xČą|…y ģƒlxčĐČ`Šiǘi¨`Ęā˙Đˆ`8Šéǘé¨`e|…|Še}…}`e|…|Ĩe}…}`…x8Ĩ|åx…|Ĩ}é…}`…x8Ĩ|åx…|Ĩ}å…}`ŠĻt…t˜¤u…u`8Ĩ|é…|Ĩ}é…}„q˜ ‘|ˆŠ‘|¤q`„q ą|…tČą|…u¤qLģƒ ģƒ ģƒĨ|i…|Ĩ}i…}`„q ą|…pŠ‘|Čą|ĒĨq‘|ЍĻp`Š…x†r„s „p„q p&q&r&s Ĩxep…pŠeq…qˆĐæĻp¤q` ŖƒŠetǘeu¨` Ŗƒ†p„q8ĨtåpĒĨuåq¨` Ŗƒ†r„s „p„q p&q&r&sĨtep…pĨueq…qŠer…rˆĐāĻp¤q` Ŗƒ˜EuH˜ ‹…$u +… …„h ‹…` Ŗƒ …†x„yĨt…pĨu…q „t„uĸp&q&t&u8Ĩtåx¨Ĩuåy„t…u&p&qĘĐåĻp¤q` Ŗƒ˜H ‹…$u +… Ū„h ‹…` Ŗƒ …†x„y „p„qĸt&u&p&q8Ĩpåx¨Ĩqåy„p…q&t&uĘĐåĻp¤q`ŠĐ˜Đdivision by zero`8Šåt…tŠåu…u` ŖƒŠtǘu¨` ŖƒŠEtǘEu¨` ŖƒŠ%tǘ%u¨` ŖƒĨu…qĨtāđFqjĘĐúǤq` ŖƒĨt…pĨuāđp*ĘĐú¨Ļp`ŠI˙iǘI˙i¨`āĐĀ` æ…đĸ`ĸ` æ…Đĸ`ĸ` æ…đĸ`ĸ` æ…đĸ`ĸ` 慰ĸ`ĸ` 慐ĸ`ĸ` Ŗƒ†p˜ I€…qĨuI€ÅqĐĨtÅp` /†đĸ`ĸ` /†đĸ`ĸ` /†°ĸ`ĸ` /†ĸ`ĸ` Ŗƒ†p„q ĨuÅqĐĨtÅp`ÉĐ'Š ĸ ô˙Š~ ô˙Š  Î˙О ĸ˙ ô˙ escape`Š ô˙Ļ~š` ‡Š…€Š…Šĸ€  Ũ˙Éđ ą|ijjjĸ  Î˙Ēđ `ĸ˙ ˙` ‡Š€ĸ  Î˙Ēđ `ĸ˙ ˙` ą|¨Š Î˙` ‡Š…€Š…Šĸ€  Ũ˙`ŠLLˆ ‡ĸ  ÷˙Šĸ ô˙ `Šĸ€  Ú˙Ļ€¤` ą|…pČą|…q ąp™đČĐöŠ ™` ą|ĒŠ ô˙Šđĸ `ŠHL€‡ ą|Éđ ÉđŠHL€‡ ą|…pČą|…qČą|…xČą|Ē ĨxĐāđĘÆxąp ū‡ČĐíæqLg‡` ą|…€ ą|…Čą|…‚Š…ƒ…„Čą|……Čą|…†Š…‡…ˆhĸ€  Ņ˙8 ą|å…ĒČą|冨` ą|đ¨ ×˙°ĒLĒ‚ĸ˙ ˙` ā˙É Đ î˙Š î˙ĒLĒ‚ ą|Ē ą|Éđ É𨊠Ô˙`ŠÉ đ î˙`Š î˙Š î˙` ą| î˙` ą|ĒČą|… ą|¤ ô˙` ą|ĒČą|… ą|¤ ņ˙˜Ēh)¨` ą|H ‡ ą|…xČą|…y Š‘xČŠ‘xhĻx¤y Ũ˙ÉĐĸ˙ ˙`ĸ ‘x` ą|ĒŊY‰)Ēđĸ` ą|ĒŊY‰)Ēđĸ` ą|ĒŊY‰)Ēđĸ` ą|ĒŊY‰)Ēđĸ` ą|ĒŊY‰)DĒđĸ` ą|ĒŊY‰)Ēđĸ` ą|ĒŊY‰)Ēđĸ` ą|ĒŊY‰)Ēđĸ` ą|ĒŊY‰)Ēđĸ` ą|ĒŊY‰) Ēđĸ` ą|)€I€Ēđĸ` ą|ĒŊY‰)đ8Šé Ē` ą|ĒŊY‰)đŠi Ē` ą|)Ē`  AAAAAABBBBBB Š ]ƒ ˛‚ ˆƒ ŧ‚ ƒ é‚ ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ ™…ĐL ŠLí‰ ˇ‚ ˆƒ ƒ 4ƒ é‚ ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ Á‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ™…ĐLTŠLŠ ˛‚ ƒ ģƒ` ˛‚ ƒ ú‚ ˆƒ ŧ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚  …ĐLŗŠ ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ ˆƒĸ   …ĐL°Šĸ `L^Š ˛‚ ƒ ú‚ ˆƒ ŧ‚ ˆƒ ƒ 4ƒ é‚ ú‚ „`Š ]ƒ ˛‚ ˆƒ ŧ‚ ƒ é‚ ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ Á‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ™…ĐL!‹LéŠ ˛‚ ƒ ģƒ`Š ]ƒ ˛‚ ˆƒĸ  é‚ ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ ™…ĐLo‹ ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒL=‹ ˛‚ ƒ ģƒ`Š ]ƒ ˛‚ ˆƒ ŧ‚ ƒ é‚ ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ ™…ĐL­‹L‹ ˇ‚ ˆƒ ƒ 4ƒ é‚ ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ Á‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ™…ĐL.Œ Á‚ ˆƒ ƒ 4ƒ é‚ ˆƒĸ  ۅĐL+Œ ˇ‚ ˆƒ ƒ 4ƒ é‚ ˆƒĸ  Ū‚L.ŒLŧ‹ ˛‚ ƒ ģƒ` ŧ‚ ˆƒ ƒ 4ƒ é‚ ˆƒĸ  Ѕ ˆƒ ˇ‚ ƒ ú‚ ˆƒ Á‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚  … Q… ™…ĐL¯Œ ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ ˆƒĸ   …ĐLŦŒĸ `L8Œ ŧ‚ ƒ ˆƒĸ  ۅĐLɌĸ ` ˛‚ ƒ ú‚ ˆƒ ŧ‚ ˆƒ ƒ 4ƒ é‚ ú‚ „`Š ]ƒ ˛‚ ˆƒ Á‚ ƒ é‚ ˇ‚ ˆƒĸ  é‚ ˇ‚ ƒ ˆƒ ˂ ƒ ۅĐLŊ ŧ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒĸ   …ĐL¨ ˇ‚ ˆƒ ƒ %ƒ é‚ ˆƒ ˂ ƒ ۅĐLž ŧ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ  Ū‚L_ ˛‚ ƒ ¸ƒ` ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒL  ˛‚ ƒ ¸ƒ` ˛‚ ƒ ˆƒ Æ ģƒ`Š ]ƒ ŧ‚ ƒ ú‚ ˆƒĸw   …ĐLeŽ ˛‚ ˆƒĸ  ˆƒ Á‚ ƒ ˆƒ x† ¸ƒ é‚ ˆƒĸ  ‹… Ģ…ĐLCŽ ˛‚ ƒ ˆƒ Æ ģƒ ˇ‚ ƒ ˆƒ Ά ģƒ ˛‚ ˆƒĸ  ˆƒ Á‚ ƒ ˆƒ Ŧ† ¸ƒ é‚L„Ž ˛‚ ˆƒĸ  ˆƒ Á‚ ƒ ˆƒ x† ¸ƒ é‚ ˛‚ ƒ ˆƒĸ  ‹…  …ĐL¤Žĸ  ģƒ` ˛‚ ƒ ģƒ`Š ]ƒ ˛‚ ˆƒ Á‚ ƒ é‚ Á‚ ˆƒ ƒ 4ƒ é‚ ˆƒĸ  ļ… ˆƒ ŧ‚ ˆƒ Ђ ƒ ˆƒ ž‡ ģƒ é‚ ˆƒĸ  ‹… Ģ… Q… ™…ĐLĒ ˇ‚ ƒ ˆƒĸ   …ĐLU ˛‚ ˆƒ ƒ 4ƒ é‚ ˆƒ Á‚ ƒ $†ĐLR ˛‚ ˆƒ Á‚ ƒ é‚LŽ ˇ‚ ƒ ˆƒĸ    …ĐLw ˇ‚ ˆƒĸ   é‚ ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ ŧ‚ ƒ Ū‚ ˆƒĸ    …ĐL§LĒLŽ ˛‚ ƒ ˆƒĸ  Ū‚ ˇ‚ ƒ ˆƒĸ  ‹…  … ˆƒ ˇ‚ ƒ ˆƒ Ƃ ƒ  … Q… ™…ĐLõĸ  ¸ƒ` ŧ‚ ƒ ¸ƒ`Š ]ƒ Ƃ ƒ ˆƒĸ  Ģ… ˆƒ ˂ ƒ ˆƒĸ  Ģ… Q… ˆƒ ˂ ƒ ˆƒĸ  Ģ… Q… ™…ĐLĸ ŧ‚ ˆƒ Ƃ ƒ é‚ ŧ‚ ƒ ú‚ ™…ĐLĸ ŧ‚ ƒ ú‚ ˆƒĸ    …ĐL ŧ‚ ƒ ˆƒĸ   Ū‚ ŧ‚ ˆƒ ƒ %ƒ é‚LW ˛‚ ˆƒ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ é‚ ™…ĐLė ˇ‚ ˆƒ ˂ ƒ ˆƒ ŧ‚ ƒ ˆƒ æ‡ ¸ƒ é‚Lĸ ˇ‚ ƒ ĩƒ`Š ]ƒ ˛‚ ˆƒ Á‚ ƒ é‚ ˇ‚ ˆƒĸ  ˆƒ ž‡ ģƒ é‚ ˆƒĸ   Ģ… ˆƒ ŧ‚ ƒ ˆƒĸ  Ѕ Q… ™…ĐLi‘ ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ ŧ‚ ƒ Ū‚L ‘ ˇ‚ ƒ ˆƒĸ  ۅ ˆƒ ˇ‚ ƒ ˆƒ Ƃ ƒ  … Q… ™…ĐLĄ‘ĸ  ¸ƒ` ˛‚ ƒ ˆƒĸ  Ū‚ ŧ‚ ƒ ¸ƒ`Š ]ƒ ˛‚ ˆƒ ŧ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ é‚ ™…ĐL˙‘ĸ  ˆƒ ˇ‚ ƒ ˆƒ æ‡ ¸ƒLĀ‘ĸ  ˆƒĸ   ˆƒ æ‡ ¸ƒ ģƒ`Š…Š mƒĸ  Ԃ ˆƒĸ  Ԃ ƒ ˆƒ ŧ‚ ˆƒ Β ĩƒĸ  ˆƒ ˇ‚ ˆƒ ˙ ¸ƒŠ…Š Qƒ`Š…Š mƒĸ  Ԃ ˆƒĸ  Ԃ ƒ ˆƒ ŧ‚ ˆƒ Β ĩƒĸ  Ԃ ƒ ˆƒ ˇ‚ ˆƒ ˙ ¸ƒŠ…Š Qƒ` ŧ‚ ˆƒ ŧ‚ ƒ ˆƒ ŧ‚ ƒ ˆƒ Β ĩƒ`Š ]ƒ Ƃ ˆƒĸ Ō‚ ƒ é‚ĸ Ō‚ ƒ ú‚ ™…ĐLŚ ˂ ˆƒ ˂ ƒ é‚ĸ Ō‚ ƒ ú‚ ˆƒĸ%  Ģ…ĐLR“ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚Lä’ĸ Ō‚ ˆƒ ƒ %ƒ é‚ ú‚ ˆƒĸ-   …ĐLš“ĸ Ō‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚LŠ“ĸ Ō‚ ˆƒĸ   Ū‚ĸ Ō‚ ƒ ú‚ ˆƒĸ0   …ĐL”ĸ Ō‚ ú‚ ˆƒĸ-   …ĐLô“ĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚L”ĸ Ō‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˇ‚ ˆƒĸ  é‚ĸ Ō‚ ƒ ú‚ ˆƒ ވ ģƒ ™…ĐL‚” ˇ‚ ˆƒ ŧ‚ ƒ ˆƒĸ   0„ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ „ ˆƒĸ0  „ é‚L#”ĸ Ō‚ ƒ ú‚ ˆƒĸ.  Ģ…ĐL¯” ˛‚ ˆƒĸ  ‹… é‚LW•ĸ Ō‚ ˆƒ ƒ %ƒ é‚ ú‚ ˆƒ ވ ģƒ ˆƒĸ   …ĐLë” ˛‚ ˆƒĸ  é‚LW• ˛‚ ˆƒĸ  é‚ĸ Ō‚ ƒ ú‚ ˆƒ ވ ģƒ ™…ĐLW• ˛‚ ˆƒ ˇ‚ ƒ ˆƒĸ   0„ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ „ ˆƒĸ0  „ é‚Lø” Á‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒĸd   …ĐL>–ĸ Ō‚ ƒ ƒ ˆƒĸ € Q… ™…ĐL– Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ-  Ū‚ Ƃ ˆƒ ˂ ƒ ˆƒĸ   ˆƒĸ Ō‚ ƒ ˆƒĸ Ō‚ ƒ ƒ ‹… ˆƒ ۚ ĩƒ „ é‚L;– Ƃ ˆƒ ˂ ƒ ˆƒĸ   ˆƒĸ Ō‚ ƒ ˆƒĸ Ō‚ ƒ ƒ ˆƒ ۚ ĩƒ „ é‚L÷˜ Á‚ ú‚ ˆƒĸo   …ĐL‘– Ƃ ˆƒ ˂ ƒ ˆƒĸ  ˆƒĸ Ō‚ ƒ ˆƒĸ Ō‚ ƒ ƒ ˆƒ ۚ ĩƒ „ é‚L÷˜ Á‚ ú‚ ˆƒĸu   …ĐLä– Æ‚ ˆƒ ˂ ƒ ˆƒĸ   ˆƒĸ Ō‚ ƒ ˆƒĸ Ō‚ ƒ ƒ ˆƒ ۚ ĩƒ „ é‚L÷˜ Á‚ ú‚ ˆƒĸx   …ĐL7— Ƃ ˆƒ ˂ ƒ ˆƒĸ  ˆƒĸ Ō‚ ƒ ˆƒĸ Ō‚ ƒ ƒ ˆƒ ۚ ĩƒ „ é‚L÷˜ Á‚ ú‚ ˆƒĸX   …ĐL— Ƃ ˆƒ ˂ ƒ ˆƒĸ  ‹… ˆƒĸ Ō‚ ƒ ˆƒĸ Ō‚ ƒ ƒ ˆƒ ۚ ĩƒ „ é‚L÷˜ Á‚ ú‚ ˆƒĸc   …ĐLؗ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ Ō‚ ƒ ƒ Ū‚ Ƃ ƒ ˆƒĸ  Ū‚L÷˜ Á‚ ú‚ ˆƒĸs   …ĐLɘ ŧ‚ ˆƒĸ Ō‚ ƒ ƒ é‚ Æ‚ ˆƒ ƒ 4ƒ é‚ ˛‚ ƒ ˆƒĸ  ۅĐL]˜ Ƃ ˆƒ ƒ %ƒ é‚ ˆƒ Á‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ™…ĐLZ˜L%˜LƘ Ƃ ˆƒ ƒ %ƒ é‚ ˆƒ Á‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ™…ĐLƘ ˛‚ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ   …ĐLØ Ƃ ƒ ˆƒĸ  Ū‚LƘL]˜L÷˜ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ Ƃ ú‚ Ū‚ Ƃ ƒ ˆƒĸ  Ū‚ ˇ‚ ˆƒ ŧ‚ ƒ ˆƒ Ђ ƒ ˆƒĸ Ō‚ ƒ „ „ é‚ ˆƒĸ  ļ…ĐLޚĸ Ō‚ ú‚ ˆƒĸ-   …ĐL™™ ˇ‚ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ  ļ…ĐL†™ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ   Ū‚LF™ Ƃ ƒ ˆƒĸ  Ū‚Lޚ Á‚ ú‚ ˆƒĸd   … ˆƒ Ђ ƒ ú‚ ˆƒĸ-   … Q… ˆƒĸ Ō‚ ú‚ ˆƒĸ0   … Q… ™…ĐLô™ ˂ ˆƒ ƒ %ƒ é‚ 4ƒ Ƃ ƒ ˆƒ Ђ ƒ †ĐL;š Ƃ ƒ ˆƒ ŧ‚ ƒ „ ˆƒ ˂ ˆƒ ƒ 4ƒ é‚ %ƒ ú‚ Ū‚Lô™ ˇ‚ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ  ļ…ĐLš ˂ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ Ō‚ ú‚ Ū‚L;š Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ ™…ĐLŸšLš Ƃ ˆƒ ƒ 4ƒ é‚ĸ Ō‚ ˆƒ ƒ *ƒ é‚ ;ƒLä’ Æ‚ ƒ ˆƒĸ  Ū‚Š Eƒ`Š ]ƒ ˂ ƒ ˆƒĸ  ЅĐL› ˇ‚ ˆƒĸa  ˆƒĸ   „ é‚L8› ˂ ˆƒ Ђ ƒ ‹… é‚ ˇ‚ ˆƒĸA  ˆƒĸ   „ é‚ ˛‚ ˆƒ ˂ ƒ é‚ Á‚ ƒ ˆƒĸ   …ĐL{› ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ0  Ū‚L*œ Á‚ ƒ ™…ĐL*œ ŧ‚ ˆƒ Ƃ ƒ ˆƒĸ Ō‚ ƒ ۄ é‚ ˆƒĸ   ۅĐLā› ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ Á‚ ƒ ˆƒĸ0  „ Ū‚L œ ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ Á‚ ƒ ˆƒ Á‚ ƒ „ Ū‚ Á‚ ˆƒ Ƃ ƒ ˆƒĸ Ō‚ ƒ ‚„ é‚L{› Á‚ ˆƒ ˇ‚ ƒ ˆƒ Ђ ƒ „ é‚ ˛‚ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ  Ū‚ Ƃ ƒ ˆƒ ˇ‚ ƒ $†ĐL˜ ŧ‚ ˆƒ ˂ ƒ ú‚ é‚ Æ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ ˇ‚ ƒ ú‚ Ū‚ ˛‚ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒ Á‚ ƒ Ū‚Laœ Á‚ ƒ ĩƒ`Š…Š mƒĸ  Ԃ ˆƒĸ  Ԃ ƒ ˆƒ ŧ‚ ˆƒĸ  ˆƒ …Š EƒŠ…Š Qƒ`Š…Š mƒĸ  Ԃ ˆƒĸ  Ԃ ƒ ˆƒ ŧ‚ ˆƒĸ  Ԃ ƒ ˆƒ …Š EƒŠ…Š Qƒ` ŧ‚ ˆƒ ŧ‚ ƒ ˆƒ ŧ‚ ƒ ˆƒĸ  ‹… ˆƒ …Š Eƒ`Š ]ƒĸ Ō‚ ƒ ˆƒĸ  ‹… Ģ…ĐLļĸ Ō‚ ƒ ˆƒĸ  Ū‚ĸ Ō‚ ˆƒĸ Ō‚ ƒ é‚ ˛‚ ˆƒĸ  é‚ĸ Ō‚ ƒ ú‚ ™…ĐLŠĸ Ō‚ ú‚ ˆƒĸ%  Ģ… ˆƒĸ Ō‚ ú‚ ˆƒĸ   … 9… ™…ĐLé ĸ Ō‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒ Έ ģƒ ™…ĐLQžLž Ђ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒ Έ ģƒ ™…ĐL…žLQžĸ Ō‚ ú‚ ˆƒĸ   …ĐLŸžLé ĸ Ō‚ ƒ ˆƒĸ  ‹… Ģ…ĐL‹  Ђ ú‚ ˆƒĸ   …ĐL‹ ĸ Ō‚ ˆƒĸ Ō‚ ƒ é‚ Á‚ ˆƒĸ  é‚ Á‚ ƒ ˆƒĸ  ۅĐLëŸ Đ‚ ˆƒĸ Ō‚ ƒ ˆƒ ž‡ ģƒ Ū‚ ˆƒĸ  ‹…  …ĐL2ŸLëŸ Đ‚ ú‚ ˆƒĸ   …ĐLŸĸ Ō‚ ˆƒ ƒ 4ƒ é‚ ˆƒĸ Ō‚ ƒ $†ĐL~Ÿĸ Ō‚ ˆƒĸ Ō‚ ƒ é‚Lîžĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ Ō‚ ú‚ Ū‚ Ђ ú‚ ˆƒĸ    … ˆƒĸ Ō‚ ú‚ ˆƒĸ    … 9… ™…ĐL֟LëŸ Á‚ ˆƒ ƒ %ƒ é‚ 4ƒLîžĸ Ō‚ ƒ ˆƒĸ  Ū‚ Ђ ú‚ ˆƒĸ  ‹…  … ˆƒĸ Ō‚ ƒ ˆƒĸ Ō‚ ƒ  … Q… ™…ĐLA ĸ  ‹…Š Eƒ`ĸ Ō‚ ˆƒĸ Ō‚ ƒ é‚ Đ‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒ Έ ģƒ ™…ĐLˆ LT Lšžĸ Ō‚ ú‚ ˆƒĸ  Ģ… ˆƒĸ Ō‚ ú‚ ˆƒĸ Ō‚ ú‚ Ģ… Q… ˆƒĸ Ō‚ ú‚ ˆƒĸ%  Ģ… Q… ™…ĐLæ ĸ  ‹…Š Eƒ`Léĸ Ō‚ ú‚ ˆƒĸ   …ĐLĄLŠĸ Ō‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˇ‚ ˆƒĸ Ō‚ ú‚ ˆƒĸ*  Ģ… é‚ ˆƒĸ   …ĐLqĄĸ Ō‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ĸ Ō‚ ú‚ ˆƒ ވ ģƒ ˆƒĸ   …ĐLĄĄ ˂ ˆƒĸ  é‚Lĸ ˂ ˆƒĸ  é‚ Ë‚ ˆƒ Ђ ƒ ˆƒĸ   0„ ˆƒĸ Ō‚ ú‚ „ ˆƒĸ0  „ é‚ĸ Ō‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒ ވ ģƒ ™…đLŽĄ Á‚ ˆƒĸ  é‚ĸ Ō‚ ú‚ ˆƒĸd   …ĐLžŖ Ƃ ˆƒĸ  é‚ Đ‚ ú‚ ˆƒĸ+   …ĐLŠĸ Ђ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˂ ˆƒ ƒ 4ƒ é‚LŪĸ Ђ ú‚ ˆƒĸ-   …ĐLŪĸ Ђ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ Ƃ ˆƒĸ  ‹… é‚ Ë‚ ˆƒ ƒ 4ƒ é‚ Đ‚ ú‚ ˆƒ ވ ģƒ ˆƒĸ   …ĐL Ŗĸ  ‹…Š Eƒ` Ђ ú‚ ˆƒ ވ ģƒ ˆƒĸ  Ģ… ˆƒ Ђ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ  ļ… Q… ™…ĐL Ŗ Á‚ ˆƒ Ƃ ƒ ˆƒĸ   0„ ˆƒĸ Ō‚ ú‚ „ ˆƒĸ0  „ é‚ Đ‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚L Ŗ Á‚ ˆƒ Ƃ ƒ ˆƒ Ђ ƒ 0„ é‚L§¨ĸ Ō‚ ú‚ ˆƒĸo   …ĐLģ¤ Đ‚ ú‚ ˆƒĸ0  ۅ ˆƒĸ Ō‚ ú‚ ˆƒĸ7  ļ… 9… ™…ĐL¤ĸ  ‹…Š Eƒ` Ђ ú‚ ˆƒĸ0  Ѕ ˆƒĸ Ō‚ ú‚ ˆƒĸ7  Å Q… ˆƒ Ђ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ  ļ… Q… ™…ĐL¸¤ Á‚ ˆƒ Ƃ ƒ ˆƒĸ  0„ ˆƒĸ Ō‚ ú‚ „ ˆƒĸ0  „ é‚ Đ‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚L¤L§¨ĸ Ō‚ ú‚ ˆƒĸx   … ˆƒĸ Ō‚ ú‚ ˆƒĸX   … 9… ™…ĐLÎĻ Đ‚ ú‚ ˆƒĸ0   …ĐLeĨ Ђ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒĸ Ō‚ ú‚  …ĐLXĨ Ђ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚LeĨĸ  ‹…Š Eƒ` Ђ ú‚ ˆƒ žˆ ģƒ ˆƒĸ   …ĐLĨĸ  ‹…Š Eƒ` Ђ ú‚ ˆƒ žˆ ģƒ ˆƒĸ  Ģ… ˆƒ Ђ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ  ļ… Q… ™…ĐLËĻ Đ‚ ú‚ ˆƒ ވ ģƒ ™…ĐLĻ ŧ‚ ˆƒĸ Ō‚ ú‚ ˆƒĸ0  „ é‚LƒĻ Ђ ú‚ ˆƒ Žˆ ģƒ ™…ĐLGĻ ŧ‚ ˆƒĸ Ō‚ ú‚ ˆƒĸA  „ ˆƒĸ   „ é‚LƒĻ Ђ ú‚ ˆƒ žˆ ģƒ ™…ĐLƒĻ ŧ‚ ˆƒĸ Ō‚ ú‚ ˆƒĸa  „ ˆƒĸ   „ é‚ Á‚ ˆƒ Ƃ ƒ ˆƒĸ  0„ ˆƒ Ƃ ƒ „ é‚ Đ‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚LĨL§¨ĸ Ō‚ ú‚ ˆƒĸs   …ĐL@¨ ˇ‚ ƒ ™…ĐL˧ĸ Ō‚ ˆƒĸ Ō‚ ƒ ˆƒ ŧ‚ ˆƒ ƒ %ƒ é‚ 4ƒ რ„ ƒ é‚ Đ‚ ú‚ ˆƒĸ  Ģ… ˆƒ Ђ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ  ļ… Q… ™…ĐLˇ§ĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ Ō‚ ú‚ Ū‚ Ђ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒ Έ ģƒ ™…ĐL´§Lˇ§L$§ĸ Ō‚ ƒ ˆƒĸ  Ū‚L=¨ Ђ ú‚ ˆƒĸ  Ģ… ˆƒ Ђ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ  ļ… Q… ™…ĐL=¨ Ђ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒ Έ ģƒ ™…ĐL:¨L=¨L˧L§¨ĸ Ō‚ ú‚ ˆƒĸc   …ĐLš¨ Á‚ ˆƒĸ Ō‚ ú‚ é‚ Đ‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˂ ˆƒ ƒ 4ƒ é‚L§¨ĸ  ‹…Š Eƒ` ˇ‚ ƒ ˆƒĸ  Ģ… ˆƒĸ Ō‚ ú‚ ˆƒĸs  Ģ… Q… ™…ĐL Šĸ Ō‚ ƒ ˆƒ ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒ რ„ ƒ ˆƒ Ƃ ƒ é‚ĸ Ō‚ ˆƒ ƒ 4ƒ é‚L֝ ˛‚ ƒŠ Eƒ`Š ]ƒ ŧ‚ ˆƒĸ  é‚ ˇ‚ ˆƒĸ  é‚ ˛‚ ˆƒ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ é‚ ˆƒĸ+   …ĐL–Š ˛‚ ˆƒ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ é‚LŲŠ ˛‚ ƒ ˆƒĸ-   …ĐLŲŠ ˛‚ ˆƒ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ é‚ ˇ‚ ˆƒĸ  ‹… é‚ ˛‚ ƒ ˆƒ ވ ģƒ ™…ĐL@Ē ŧ‚ ˆƒ Á‚ ƒ ˆƒĸ   0„ ˆƒ ŧ‚ ƒ „ ˆƒĸ0  „ é‚ ˛‚ ˆƒ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ é‚LŲŠ ŧ‚ ƒ ˆƒ ŧ‚ ƒ 0„ ĩƒ`Š…ŠF mƒĸD  Ԃ ˆƒ ü† é‚ĸB  Ԃ ˆƒ ˇ‚ é‚ĸ  Ԃ ˆƒĸ  რ„ ˆƒĸD  Ԃ ƒ é‚ĸB  Ԃ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ  Ū‚ĸ@  Ԃ ˆƒĸ  é‚ĸD  Ԃ ƒ ú‚ ˆƒĸ   Ģ…ĐLKŦĸD  Ԃ ƒ ú‚ ˆƒĸ    … ˆƒĸF  Ԃ ƒ ú‚ ˆƒĸ    … 9… ™…ĐLEĢĸD  Ԃ ˆƒ ƒ %ƒ é‚ 4ƒLđĒĸD  Ԃ ƒ ú‚ ˆƒĸ   Ģ…ĐL—Ģĸ  Ԃ ˆƒĸB  Ԃ ˆƒ ƒ %ƒ é‚ 4ƒ რ„ ˆƒĸD  Ԃ ƒ é‚ĸD  Ԃ ƒ ú‚ ˆƒĸ   Ģ… ˆƒĸF  Ԃ ƒ ú‚ ˆƒĸ   Ģ… Q… ˆƒĸF  Ԃ ƒ ú‚ ˆƒĸ   Ģ… Q… ™…ĐL(ŦĸB  Ԃ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸF  Ԃ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚L—ĢĸB  Ԃ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ  Ū‚LÔĒĸF  Ԃ ƒ ˆƒĸ  Ԃ Ƀ ˆƒĸD  Ԃ ƒ Ƀ ˆƒ ƒ ¸ƒŠ…ŠF Qƒ`LˆŦЈ ]ƒĸ€ Ō‚ ˆƒĸ  ˆƒĸ  ˆƒ ˆ ¸ƒ ˆƒĸ˙  Q… é‚ ™…ĐLÖŦĸ€ Ō‚ ƒ ˆƒĸô ¯ ˆƒ ’ ¸ƒĸ€ Ō‚ ˆƒĸ  é‚ĸ  ˆƒĸ~  ˆƒ ˆ ¸ƒĸ  ˆƒĸ  ° ˆƒ ˙ ¸ƒĸ† Ō‚ ˆƒĸ† Ō‚ ˆƒĸ  ˆƒĸ  ˆƒ Ƃ ˆƒ ŽŽ ĩƒ é‚ é‚ĸ€ Ō‚ ˆƒĸ ˙ ˆƒĸÆ  ˆƒ ˆ ¸ƒ ˆƒĸ˙  Q… é‚ ™…ĐLĨ­ĸ€ Ō‚ ƒ ˆƒĸ  ˆƒ ˆ ¸ƒ ˆƒĸ˙  Q… ™…ĐLĨ­ĸ  ° ˆƒ č† ģƒĸ„ Ō‚ ƒ ú‚ ˆƒĸ    …ĐLĶ­ĸ„ Ō‚ ˆƒ ƒ %ƒ é‚LĨ­ĸ† Ō‚ ƒ ˆƒĸ† Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ™…ĐL:Žĸ† Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ ˆƒĸ    …ĐL7Žĸ† Ō‚ ˆƒ ƒ 4ƒ é‚LĶ­ĸ  ˆƒĸ ° ˆƒ ŧ‚ ˆƒ 8Œ ĩƒ ˆƒĸ   …ĐL¯ĸ† Ō‚ ˆƒ ˇ‚ ˆƒĸ  „ é‚ĸ† Ō‚ ƒ ú‚ ˆƒĸ    …ĐLŠŽĸ† Ō‚ ˆƒ ƒ %ƒ é‚L{Žĸ† Ō‚ ƒ ú‚ ˆƒ ވ ģƒ ™…ĐL¯ĸ‚ Ō‚ ˆƒĸˆ Ō‚ ƒ ú‚ ˆƒĸ0  „ é‚ĸ  ˆƒ ˆ ģƒĸ‚ Ō‚ ƒ ˆƒĸ€  9… ˆƒ ˆ ģƒĸ Šˆ EƒLo† ˛‚ ú‚ ˆƒĸ   …ĐLE¯ĸ€ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒLҝ ˛‚ ú‚ ˆƒĸ*   …ĐLŊ¯ĸ  ˆƒĸ   ˆƒ ˆ ¸ƒĸ† Ō‚ ˆƒĸ ˙ é‚ĸ† Ō‚ ƒ ú‚ ˆƒĸ`  Ģ…ĐL̝ĸ† Ō‚ ˆƒ ƒ %ƒ é‚L}¯ĸ   ˆƒĸˆ Ō‚ ƒ é‚ ˛‚ ˆƒ č† ģƒŠˆ EƒLo†ĸ€ Ō‚ ƒ ˆƒĸ   …đLåŦĸ Šˆ EƒLo†Return value: &%02X. $ execmodeLāLÂ#Small-C0.72 (23 Jun 1991)(C)1989 A.J.TravisNAME sh - Small-C command shell SYNOPSIS *sh DESCRIPTION Sideways ROM/RAM version of Small-C run-time support, and tcc library. *sh invokes an interactive sPress SPACE to loadÜSyntax: SRLoad () (I) (R) (P) (Q)Š ĸ¨ Ú˙Ĩ¨…ōĨŠ…ķ Â˙đš Å˙ûąōČÉ đųÉ đAÉ0ĨÉ:,ÉA)ßÉG ÉRđÉQđÛÉPđÉIЇi)ĒŊ§ x x ĐÃé)w Š€ĐíĨôH,x 0 B w ­x J š đ î˙ČĐõ ā˙ į˙Ĩ¨y ĨŠz ĸy  Š˙ Ũ˙­w 8  „¨„ĒŠ0…ŠŠ€…Ģą¨‘ĒČĐųæŠæĢĨĢÉĀĐī­x )đ&ĸŦ€š€Ũ> ĐˆĘôŽw ­€Ą­x )đŠŽLô˙h…ô0ū`(C) ĸŠ 8 ˜đŊĄĐ­€î€Í€đ΀Š`ĘáˆÜūNo RAM found0˙˙1.03Press SPACE to loadÜSyntax: SRLoad () (I) (R) (P) (Q)Š ĸ¨ Ú˙Ĩ¨…ōĨŠ…ķ Â˙đš Å˙ûąōČÉ đųÉ đAÉ0ĨÉ:; start.s 11-Apr-89 A.J.Travis ; ; start-up ROM-dependant Small-C program ; *=$1902 ; start lda #252 ;read current language ROM number ldx #$00 ;EOR X ldy #$ff ;AND Y jsr osbyte stx osrom ;Small-C ROM # returned in X stx $fe30 ;ROM select latch ldx #<_main ;user entry point ldy #>_main jsr push ;on tcc data stack jmp __cmdini ;_cmdinit(&main) ; start.s 11-Apr-89 A.J.Travis ; ; start-up ROM-dependant Small-C program ; *=$1902 ; start lda #252 ;read current language ROM number ldx #$00 ;EO/* stdio.h - 11 Feb 88 A.J.Travis */ /* * tcc 'standard' i/o header file */ #ifndef STDIO #define STDIO /* avoid multiple includes */ #define BUFSIZ 256 #define NULL 0 #define EOF (-1) #define stdin 0 #define stdout 1 #define stderr 2 #define FILE int #define unsigned char * #define getchar() getc(stdin) #define putchar(x) putc(x, stdout) #define os_file(a,n,b) osfile(n,b,a) #define os_byte(a,xy) os_byte(a,xy) #define os_word(a,xy) os_word(a,xy) #define os_wrch(a) vdu(a) #endif /* stdio.h - 11 FebLāLÂ#Small-C0.72 (23 Jun 1991)(C)1989 A.J.TravisNAME sh - Small-C command shell SYNOPSIS *sh DESCRIPTION Sideways ROM/RAM version of Small-C run-time support, and tcc library. *sh invokes an interactive shell. AUTHOR A.J.Travis H˜HŠHēŊÉĐ"ĸŊj€ŅōđI ŅōĐ É đČčLLžŠŽĻôLô˙É Đō į˙ąōÉ Đ@ĸŊ €đ î˙čLEŠ î˙ĸŊ€đ É đ î˙čLX į˙Š î˙ î˙ĸŊj€ ã˙čÉ ĐõLžĸŊj€É đŅōđI ŅōĐ(ČčL… Š7…xŠ€…yąxđ ã˙æxĐõæyLĨ į˙ēŠhĒh¨h`Ѝĸ ˙ ô˙†x„y Š&‘xČŠ‚‘xČĨô‘x 0ŠC‘xČŠ†‘xČĨô‘xŠŠ˙Š0 Š˙!Šĸ ô˙XØĸ˙šŠHŠÃHē†~Š„ ô˙†|„}L…Ŧ ąũđ î˙ČL(‚ į˙Lā…†p„q į˙ ē ‚ŊŧĒ ‚Ļp¤q ‚Ļt¤u ‚Ļx¤y ‚Ļ|¤} ‚ ą|ĒČą|¨ ‚ĨĻp¤q`˜ ‚Š ‚Š î˙`HJJJJ œ‚h œ‚`)É 0ii0Lî˙ ˙` `Ļ|¤}`ĸLŌ‚ĸLŌ‚ĸLŌ‚ĸLŌ‚ĸ LŌ‚ĸ  Še|ǘe}¨` Ŗƒ Š‘tLĒ‚ Ŗƒ„q Š‘tČĨq‘t¨`†p„q ąpĒLĒ‚†p„q ąpĒČąp¨` ą|…xČą|…y ģƒlxčĐČ`Šiǘi¨`Ęā˙Đˆ`8Šéǘé¨`e|…|Še}…}`e|…|Ĩe}…}`…x8Ĩ|åx…|Ĩ}é…}`…x8Ĩ|åx…|Ĩ}å…}`ŠĻt…t˜¤u…u`8Ĩ|é…|Ĩ}é…}„q˜ ‘|ˆŠ‘|¤q`„q ą|…tČą|…u¤qLģƒ ģƒ ģƒĨ|i…|Ĩ}i…}`„q ą|…pŠ‘|Čą|ĒĨq‘|ЍĻp`Š…x†r„s „p„q p&q&r&s Ĩxep…pŠeq…qˆĐæĻp¤q` ŖƒŠetǘeu¨` Ŗƒ†p„q8ĨtåpĒĨuåq¨` Ŗƒ†r„s „p„q p&q&r&sĨtep…pĨueq…qŠer…rˆĐāĻp¤q` Ŗƒ˜EuH˜ ‹…$u +… …„h ‹…` Ŗƒ …†x„yĨt…pĨu…q „t„uĸp&q&t&u8Ĩtåx¨Ĩuåy„t…u&p&qĘĐåĻp¤q` Ŗƒ˜H ‹…$u +… Ū„h ‹…` Ŗƒ …†x„y „p„qĸt&u&p&q8Ĩpåx¨Ĩqåy„p…q&t&uĘĐåĻp¤q`ŠĐ˜Đdivision by zero`8Šåt…tŠåu…u` ŖƒŠtǘu¨` ŖƒŠEtǘEu¨` ŖƒŠ%tǘ%u¨` ŖƒĨu…qĨtāđFqjĘĐúǤq` ŖƒĨt…pĨuāđp*ĘĐú¨Ļp`ŠI˙iǘI˙i¨`āĐĀ` æ…đĸ`ĸ` æ…Đĸ`ĸ` æ…đĸ`ĸ` æ…đĸ`ĸ` 慰ĸ`ĸ` 慐ĸ`ĸ` Ŗƒ†p˜ I€…qĨuI€ÅqĐĨtÅp` /†đĸ`ĸ` /†đĸ`ĸ` /†°ĸ`ĸ` /†ĸ`ĸ` Ŗƒ†p„q ĨuÅqĐĨtÅp`ÉĐ'Š ĸ ô˙Š~ ô˙Š  Î˙О ĸ˙ ô˙ escape`Š ô˙Ļ~š` ‡Š…€Š…Šĸ€  Ũ˙Éđ ą|ijjjĸ  Î˙Ēđ `ĸ˙ ˙` ‡Š€ĸ  Î˙Ēđ `ĸ˙ ˙` ą|¨Š Î˙` ‡Š…€Š…Šĸ€  Ũ˙`ŠLLˆ ‡ĸ  ÷˙Šĸ ô˙ `Šĸ€  Ú˙Ļ€¤` ą|…pČą|…q ąp™đČĐöŠ ™` ą|ĒŠ ô˙Šđĸ `ŠHL€‡ ą|Éđ ÉđŠHL€‡ ą|…pČą|…qČą|…xČą|Ē ĨxĐāđĘÆxąp ū‡ČĐíæqLg‡` ą|…€ ą|…Čą|…‚Š…ƒ…„Čą|……Čą|…†Š…‡…ˆhĸ€  Ņ˙8 ą|å…ĒČą|冨` ą|đ¨ ×˙°ĒLĒ‚ĸ˙ ˙` ā˙É Đ î˙Š î˙ĒLĒ‚ ą|Ē ą|Éđ É𨊠Ô˙`ŠÉ đ î˙`Š î˙Š î˙` ą| î˙` ą|ĒČą|… ą|¤ ô˙` ą|ĒČą|… ą|¤ ņ˙˜Ēh)¨` ą|H ‡ ą|…xČą|…y Š‘xČŠ‘xhĻx¤y Ũ˙ÉĐĸ˙ ˙`ĸ ‘x` ą|ĒŊY‰)Ēđĸ` ą|ĒŊY‰)Ēđĸ` ą|ĒŊY‰)Ēđĸ` ą|ĒŊY‰)Ēđĸ` ą|ĒŊY‰)DĒđĸ` ą|ĒŊY‰)Ēđĸ` ą|ĒŊY‰)Ēđĸ` ą|ĒŊY‰)Ēđĸ` ą|ĒŊY‰)Ēđĸ` ą|ĒŊY‰) Ēđĸ` ą|)€I€Ēđĸ` ą|ĒŊY‰)đ8Šé Ē` ą|ĒŊY‰)đŠi Ē` ą|)Ē`  AAAAAABBBBBB Š ]ƒ ˛‚ ˆƒ ŧ‚ ƒ é‚ ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ ™…ĐL ŠLí‰ ˇ‚ ˆƒ ƒ 4ƒ é‚ ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ Á‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ™…ĐLTŠLŠ ˛‚ ƒ ģƒ` ˛‚ ƒ ú‚ ˆƒ ŧ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚  …ĐLŗŠ ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ ˆƒĸ   …ĐL°Šĸ `L^Š ˛‚ ƒ ú‚ ˆƒ ŧ‚ ˆƒ ƒ 4ƒ é‚ ú‚ „`Š ]ƒ ˛‚ ˆƒ ŧ‚ ƒ é‚ ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ Á‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ™…ĐL!‹LéŠ ˛‚ ƒ ģƒ`Š ]ƒ ˛‚ ˆƒĸ  é‚ ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ ™…ĐLo‹ ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒL=‹ ˛‚ ƒ ģƒ`Š ]ƒ ˛‚ ˆƒ ŧ‚ ƒ é‚ ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ ™…ĐL­‹L‹ ˇ‚ ˆƒ ƒ 4ƒ é‚ ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ Á‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ™…ĐL.Œ Á‚ ˆƒ ƒ 4ƒ é‚ ˆƒĸ  ۅĐL+Œ ˇ‚ ˆƒ ƒ 4ƒ é‚ ˆƒĸ  Ū‚L.ŒLŧ‹ ˛‚ ƒ ģƒ` ŧ‚ ˆƒ ƒ 4ƒ é‚ ˆƒĸ  Ѕ ˆƒ ˇ‚ ƒ ú‚ ˆƒ Á‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚  … Q… ™…ĐL¯Œ ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ ˆƒĸ   …ĐLŦŒĸ `L8Œ ŧ‚ ƒ ˆƒĸ  ۅĐLɌĸ ` ˛‚ ƒ ú‚ ˆƒ ŧ‚ ˆƒ ƒ 4ƒ é‚ ú‚ „`Š ]ƒ ˛‚ ˆƒ Á‚ ƒ é‚ ˇ‚ ˆƒĸ  é‚ ˇ‚ ƒ ˆƒ ˂ ƒ ۅĐLŊ ŧ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒĸ   …ĐL¨ ˇ‚ ˆƒ ƒ %ƒ é‚ ˆƒ ˂ ƒ ۅĐLž ŧ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ  Ū‚L_ ˛‚ ƒ ¸ƒ` ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒL  ˛‚ ƒ ¸ƒ` ˛‚ ƒ ˆƒ Æ ģƒ`Š ]ƒ ŧ‚ ƒ ú‚ ˆƒĸw   …ĐLeŽ ˛‚ ˆƒĸ  ˆƒ Á‚ ƒ ˆƒ x† ¸ƒ é‚ ˆƒĸ  ‹… Ģ…ĐLCŽ ˛‚ ƒ ˆƒ Æ ģƒ ˇ‚ ƒ ˆƒ Ά ģƒ ˛‚ ˆƒĸ  ˆƒ Á‚ ƒ ˆƒ Ŧ† ¸ƒ é‚L„Ž ˛‚ ˆƒĸ  ˆƒ Á‚ ƒ ˆƒ x† ¸ƒ é‚ ˛‚ ƒ ˆƒĸ  ‹…  …ĐL¤Žĸ  ģƒ` ˛‚ ƒ ģƒ`Š ]ƒ ˛‚ ˆƒ Á‚ ƒ é‚ Á‚ ˆƒ ƒ 4ƒ é‚ ˆƒĸ  ļ… ˆƒ ŧ‚ ˆƒ Ђ ƒ ˆƒ ž‡ ģƒ é‚ ˆƒĸ  ‹… Ģ… Q… ™…ĐLĒ ˇ‚ ƒ ˆƒĸ   …ĐLU ˛‚ ˆƒ ƒ 4ƒ é‚ ˆƒ Á‚ ƒ $†ĐLR ˛‚ ˆƒ Á‚ ƒ é‚LŽ ˇ‚ ƒ ˆƒĸ    …ĐLw ˇ‚ ˆƒĸ   é‚ ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ ŧ‚ ƒ Ū‚ ˆƒĸ    …ĐL§LĒLŽ ˛‚ ƒ ˆƒĸ  Ū‚ ˇ‚ ƒ ˆƒĸ  ‹…  … ˆƒ ˇ‚ ƒ ˆƒ Ƃ ƒ  … Q… ™…ĐLõĸ  ¸ƒ` ŧ‚ ƒ ¸ƒ`Š ]ƒ Ƃ ƒ ˆƒĸ  Ģ… ˆƒ ˂ ƒ ˆƒĸ  Ģ… Q… ˆƒ ˂ ƒ ˆƒĸ  Ģ… Q… ™…ĐLĸ ŧ‚ ˆƒ Ƃ ƒ é‚ ŧ‚ ƒ ú‚ ™…ĐLĸ ŧ‚ ƒ ú‚ ˆƒĸ    …ĐL ŧ‚ ƒ ˆƒĸ   Ū‚ ŧ‚ ˆƒ ƒ %ƒ é‚LW ˛‚ ˆƒ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ é‚ ™…ĐLė ˇ‚ ˆƒ ˂ ƒ ˆƒ ŧ‚ ƒ ˆƒ æ‡ ¸ƒ é‚Lĸ ˇ‚ ƒ ĩƒ`Š ]ƒ ˛‚ ˆƒ Á‚ ƒ é‚ ˇ‚ ˆƒĸ  ˆƒ ž‡ ģƒ é‚ ˆƒĸ   Ģ… ˆƒ ŧ‚ ƒ ˆƒĸ  Ѕ Q… ™…ĐLi‘ ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ ŧ‚ ƒ Ū‚L ‘ ˇ‚ ƒ ˆƒĸ  ۅ ˆƒ ˇ‚ ƒ ˆƒ Ƃ ƒ  … Q… ™…ĐLĄ‘ĸ  ¸ƒ` ˛‚ ƒ ˆƒĸ  Ū‚ ŧ‚ ƒ ¸ƒ`Š ]ƒ ˛‚ ˆƒ ŧ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ é‚ ™…ĐL˙‘ĸ  ˆƒ ˇ‚ ƒ ˆƒ æ‡ ¸ƒLĀ‘ĸ  ˆƒĸ   ˆƒ æ‡ ¸ƒ ģƒ`Š…Š mƒĸ  Ԃ ˆƒĸ  Ԃ ƒ ˆƒ ŧ‚ ˆƒ Β ĩƒĸ  ˆƒ ˇ‚ ˆƒ ˙ ¸ƒŠ…Š Qƒ`Š…Š mƒĸ  Ԃ ˆƒĸ  Ԃ ƒ ˆƒ ŧ‚ ˆƒ Β ĩƒĸ  Ԃ ƒ ˆƒ ˇ‚ ˆƒ ˙ ¸ƒŠ…Š Qƒ` ŧ‚ ˆƒ ŧ‚ ƒ ˆƒ ŧ‚ ƒ ˆƒ Β ĩƒ`Š ]ƒ Ƃ ˆƒĸ Ō‚ ƒ é‚ĸ Ō‚ ƒ ú‚ ™…ĐLŚ ˂ ˆƒ ˂ ƒ é‚ĸ Ō‚ ƒ ú‚ ˆƒĸ%  Ģ…ĐLR“ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚Lä’ĸ Ō‚ ˆƒ ƒ %ƒ é‚ ú‚ ˆƒĸ-   …ĐLš“ĸ Ō‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚LŠ“ĸ Ō‚ ˆƒĸ   Ū‚ĸ Ō‚ ƒ ú‚ ˆƒĸ0   …ĐL”ĸ Ō‚ ú‚ ˆƒĸ-   …ĐLô“ĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚L”ĸ Ō‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˇ‚ ˆƒĸ  é‚ĸ Ō‚ ƒ ú‚ ˆƒ ވ ģƒ ™…ĐL‚” ˇ‚ ˆƒ ŧ‚ ƒ ˆƒĸ   0„ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ „ ˆƒĸ0  „ é‚L#”ĸ Ō‚ ƒ ú‚ ˆƒĸ.  Ģ…ĐL¯” ˛‚ ˆƒĸ  ‹… é‚LW•ĸ Ō‚ ˆƒ ƒ %ƒ é‚ ú‚ ˆƒ ވ ģƒ ˆƒĸ   …ĐLë” ˛‚ ˆƒĸ  é‚LW• ˛‚ ˆƒĸ  é‚ĸ Ō‚ ƒ ú‚ ˆƒ ވ ģƒ ™…ĐLW• ˛‚ ˆƒ ˇ‚ ƒ ˆƒĸ   0„ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ „ ˆƒĸ0  „ é‚Lø” Á‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒĸd   …ĐL>–ĸ Ō‚ ƒ ƒ ˆƒĸ € Q… ™…ĐL– Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ-  Ū‚ Ƃ ˆƒ ˂ ƒ ˆƒĸ   ˆƒĸ Ō‚ ƒ ˆƒĸ Ō‚ ƒ ƒ ‹… ˆƒ ۚ ĩƒ „ é‚L;– Ƃ ˆƒ ˂ ƒ ˆƒĸ   ˆƒĸ Ō‚ ƒ ˆƒĸ Ō‚ ƒ ƒ ˆƒ ۚ ĩƒ „ é‚L÷˜ Á‚ ú‚ ˆƒĸo   …ĐL‘– Ƃ ˆƒ ˂ ƒ ˆƒĸ  ˆƒĸ Ō‚ ƒ ˆƒĸ Ō‚ ƒ ƒ ˆƒ ۚ ĩƒ „ é‚L÷˜ Á‚ ú‚ ˆƒĸu   …ĐLä– Æ‚ ˆƒ ˂ ƒ ˆƒĸ   ˆƒĸ Ō‚ ƒ ˆƒĸ Ō‚ ƒ ƒ ˆƒ ۚ ĩƒ „ é‚L÷˜ Á‚ ú‚ ˆƒĸx   …ĐL7— Ƃ ˆƒ ˂ ƒ ˆƒĸ  ˆƒĸ Ō‚ ƒ ˆƒĸ Ō‚ ƒ ƒ ˆƒ ۚ ĩƒ „ é‚L÷˜ Á‚ ú‚ ˆƒĸX   …ĐL— Ƃ ˆƒ ˂ ƒ ˆƒĸ  ‹… ˆƒĸ Ō‚ ƒ ˆƒĸ Ō‚ ƒ ƒ ˆƒ ۚ ĩƒ „ é‚L÷˜ Á‚ ú‚ ˆƒĸc   …ĐLؗ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ Ō‚ ƒ ƒ Ū‚ Ƃ ƒ ˆƒĸ  Ū‚L÷˜ Á‚ ú‚ ˆƒĸs   …ĐLɘ ŧ‚ ˆƒĸ Ō‚ ƒ ƒ é‚ Æ‚ ˆƒ ƒ 4ƒ é‚ ˛‚ ƒ ˆƒĸ  ۅĐL]˜ Ƃ ˆƒ ƒ %ƒ é‚ ˆƒ Á‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ™…ĐLZ˜L%˜LƘ Ƃ ˆƒ ƒ %ƒ é‚ ˆƒ Á‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ™…ĐLƘ ˛‚ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ   …ĐLØ Ƃ ƒ ˆƒĸ  Ū‚LƘL]˜L÷˜ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ Ƃ ú‚ Ū‚ Ƃ ƒ ˆƒĸ  Ū‚ ˇ‚ ˆƒ ŧ‚ ƒ ˆƒ Ђ ƒ ˆƒĸ Ō‚ ƒ „ „ é‚ ˆƒĸ  ļ…ĐLޚĸ Ō‚ ú‚ ˆƒĸ-   …ĐL™™ ˇ‚ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ  ļ…ĐL†™ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ   Ū‚LF™ Ƃ ƒ ˆƒĸ  Ū‚Lޚ Á‚ ú‚ ˆƒĸd   … ˆƒ Ђ ƒ ú‚ ˆƒĸ-   … Q… ˆƒĸ Ō‚ ú‚ ˆƒĸ0   … Q… ™…ĐLô™ ˂ ˆƒ ƒ %ƒ é‚ 4ƒ Ƃ ƒ ˆƒ Ђ ƒ †ĐL;š Ƃ ƒ ˆƒ ŧ‚ ƒ „ ˆƒ ˂ ˆƒ ƒ 4ƒ é‚ %ƒ ú‚ Ū‚Lô™ ˇ‚ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ  ļ…ĐLš ˂ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ Ō‚ ú‚ Ū‚L;š Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ ™…ĐLŸšLš Ƃ ˆƒ ƒ 4ƒ é‚ĸ Ō‚ ˆƒ ƒ *ƒ é‚ ;ƒLä’ Æ‚ ƒ ˆƒĸ  Ū‚Š Eƒ`Š ]ƒ ˂ ƒ ˆƒĸ  ЅĐL› ˇ‚ ˆƒĸa  ˆƒĸ   „ é‚L8› ˂ ˆƒ Ђ ƒ ‹… é‚ ˇ‚ ˆƒĸA  ˆƒĸ   „ é‚ ˛‚ ˆƒ ˂ ƒ é‚ Á‚ ƒ ˆƒĸ   …ĐL{› ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ0  Ū‚L*œ Á‚ ƒ ™…ĐL*œ ŧ‚ ˆƒ Ƃ ƒ ˆƒĸ Ō‚ ƒ ۄ é‚ ˆƒĸ   ۅĐLā› ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ Á‚ ƒ ˆƒĸ0  „ Ū‚L œ ˛‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ Á‚ ƒ ˆƒ Á‚ ƒ „ Ū‚ Á‚ ˆƒ Ƃ ƒ ˆƒĸ Ō‚ ƒ ‚„ é‚L{› Á‚ ˆƒ ˇ‚ ƒ ˆƒ Ђ ƒ „ é‚ ˛‚ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ  Ū‚ Ƃ ƒ ˆƒ ˇ‚ ƒ $†ĐL˜ ŧ‚ ˆƒ ˂ ƒ ú‚ é‚ Æ‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒ ˇ‚ ƒ ú‚ Ū‚ ˛‚ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒ Á‚ ƒ Ū‚Laœ Á‚ ƒ ĩƒ`Š…Š mƒĸ  Ԃ ˆƒĸ  Ԃ ƒ ˆƒ ŧ‚ ˆƒĸ  ˆƒ …Š EƒŠ…Š Qƒ`Š…Š mƒĸ  Ԃ ˆƒĸ  Ԃ ƒ ˆƒ ŧ‚ ˆƒĸ  Ԃ ƒ ˆƒ …Š EƒŠ…Š Qƒ` ŧ‚ ˆƒ ŧ‚ ƒ ˆƒ ŧ‚ ƒ ˆƒĸ  ‹… ˆƒ …Š Eƒ`Š ]ƒĸ Ō‚ ƒ ˆƒĸ  ‹… Ģ…ĐLļĸ Ō‚ ƒ ˆƒĸ  Ū‚ĸ Ō‚ ˆƒĸ Ō‚ ƒ é‚ ˛‚ ˆƒĸ  é‚ĸ Ō‚ ƒ ú‚ ™…ĐLŠĸ Ō‚ ú‚ ˆƒĸ%  Ģ… ˆƒĸ Ō‚ ú‚ ˆƒĸ   … 9… ™…ĐLé ĸ Ō‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒ Έ ģƒ ™…ĐLQžLž Ђ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒ Έ ģƒ ™…ĐL…žLQžĸ Ō‚ ú‚ ˆƒĸ   …ĐLŸžLé ĸ Ō‚ ƒ ˆƒĸ  ‹… Ģ…ĐL‹  Ђ ú‚ ˆƒĸ   …ĐL‹ ĸ Ō‚ ˆƒĸ Ō‚ ƒ é‚ Á‚ ˆƒĸ  é‚ Á‚ ƒ ˆƒĸ  ۅĐLëŸ Đ‚ ˆƒĸ Ō‚ ƒ ˆƒ ž‡ ģƒ Ū‚ ˆƒĸ  ‹…  …ĐL2ŸLëŸ Đ‚ ú‚ ˆƒĸ   …ĐLŸĸ Ō‚ ˆƒ ƒ 4ƒ é‚ ˆƒĸ Ō‚ ƒ $†ĐL~Ÿĸ Ō‚ ˆƒĸ Ō‚ ƒ é‚Lîžĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ Ō‚ ú‚ Ū‚ Ђ ú‚ ˆƒĸ    … ˆƒĸ Ō‚ ú‚ ˆƒĸ    … 9… ™…ĐL֟LëŸ Á‚ ˆƒ ƒ %ƒ é‚ 4ƒLîžĸ Ō‚ ƒ ˆƒĸ  Ū‚ Ђ ú‚ ˆƒĸ  ‹…  … ˆƒĸ Ō‚ ƒ ˆƒĸ Ō‚ ƒ  … Q… ™…ĐLA ĸ  ‹…Š Eƒ`ĸ Ō‚ ˆƒĸ Ō‚ ƒ é‚ Đ‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒ Έ ģƒ ™…ĐLˆ LT Lšžĸ Ō‚ ú‚ ˆƒĸ  Ģ… ˆƒĸ Ō‚ ú‚ ˆƒĸ Ō‚ ú‚ Ģ… Q… ˆƒĸ Ō‚ ú‚ ˆƒĸ%  Ģ… Q… ™…ĐLæ ĸ  ‹…Š Eƒ`Léĸ Ō‚ ú‚ ˆƒĸ   …ĐLĄLŠĸ Ō‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˇ‚ ˆƒĸ Ō‚ ú‚ ˆƒĸ*  Ģ… é‚ ˆƒĸ   …ĐLqĄĸ Ō‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ĸ Ō‚ ú‚ ˆƒ ވ ģƒ ˆƒĸ   …ĐLĄĄ ˂ ˆƒĸ  é‚Lĸ ˂ ˆƒĸ  é‚ Ë‚ ˆƒ Ђ ƒ ˆƒĸ   0„ ˆƒĸ Ō‚ ú‚ „ ˆƒĸ0  „ é‚ĸ Ō‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒ ވ ģƒ ™…đLŽĄ Á‚ ˆƒĸ  é‚ĸ Ō‚ ú‚ ˆƒĸd   …ĐLžŖ Ƃ ˆƒĸ  é‚ Đ‚ ú‚ ˆƒĸ+   …ĐLŠĸ Ђ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˂ ˆƒ ƒ 4ƒ é‚LŪĸ Ђ ú‚ ˆƒĸ-   …ĐLŪĸ Ђ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ Ƃ ˆƒĸ  ‹… é‚ Ë‚ ˆƒ ƒ 4ƒ é‚ Đ‚ ú‚ ˆƒ ވ ģƒ ˆƒĸ   …ĐL Ŗĸ  ‹…Š Eƒ` Ђ ú‚ ˆƒ ވ ģƒ ˆƒĸ  Ģ… ˆƒ Ђ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ  ļ… Q… ™…ĐL Ŗ Á‚ ˆƒ Ƃ ƒ ˆƒĸ   0„ ˆƒĸ Ō‚ ú‚ „ ˆƒĸ0  „ é‚ Đ‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚L Ŗ Á‚ ˆƒ Ƃ ƒ ˆƒ Ђ ƒ 0„ é‚L§¨ĸ Ō‚ ú‚ ˆƒĸo   …ĐLģ¤ Đ‚ ú‚ ˆƒĸ0  ۅ ˆƒĸ Ō‚ ú‚ ˆƒĸ7  ļ… 9… ™…ĐL¤ĸ  ‹…Š Eƒ` Ђ ú‚ ˆƒĸ0  Ѕ ˆƒĸ Ō‚ ú‚ ˆƒĸ7  Å Q… ˆƒ Ђ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ  ļ… Q… ™…ĐL¸¤ Á‚ ˆƒ Ƃ ƒ ˆƒĸ  0„ ˆƒĸ Ō‚ ú‚ „ ˆƒĸ0  „ é‚ Đ‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚L¤L§¨ĸ Ō‚ ú‚ ˆƒĸx   … ˆƒĸ Ō‚ ú‚ ˆƒĸX   … 9… ™…ĐLÎĻ Đ‚ ú‚ ˆƒĸ0   …ĐLeĨ Ђ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒĸ Ō‚ ú‚  …ĐLXĨ Ђ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚LeĨĸ  ‹…Š Eƒ` Ђ ú‚ ˆƒ žˆ ģƒ ˆƒĸ   …ĐLĨĸ  ‹…Š Eƒ` Ђ ú‚ ˆƒ žˆ ģƒ ˆƒĸ  Ģ… ˆƒ Ђ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ  ļ… Q… ™…ĐLËĻ Đ‚ ú‚ ˆƒ ވ ģƒ ™…ĐLĻ ŧ‚ ˆƒĸ Ō‚ ú‚ ˆƒĸ0  „ é‚LƒĻ Ђ ú‚ ˆƒ Žˆ ģƒ ™…ĐLGĻ ŧ‚ ˆƒĸ Ō‚ ú‚ ˆƒĸA  „ ˆƒĸ   „ é‚LƒĻ Ђ ú‚ ˆƒ žˆ ģƒ ™…ĐLƒĻ ŧ‚ ˆƒĸ Ō‚ ú‚ ˆƒĸa  „ ˆƒĸ   „ é‚ Á‚ ˆƒ Ƃ ƒ ˆƒĸ  0„ ˆƒ Ƃ ƒ „ é‚ Đ‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚LĨL§¨ĸ Ō‚ ú‚ ˆƒĸs   …ĐL@¨ ˇ‚ ƒ ™…ĐL˧ĸ Ō‚ ˆƒĸ Ō‚ ƒ ˆƒ ŧ‚ ˆƒ ƒ %ƒ é‚ 4ƒ რ„ ƒ é‚ Đ‚ ú‚ ˆƒĸ  Ģ… ˆƒ Ђ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ  ļ… Q… ™…ĐLˇ§ĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ Ō‚ ú‚ Ū‚ Ђ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒ Έ ģƒ ™…ĐL´§Lˇ§L$§ĸ Ō‚ ƒ ˆƒĸ  Ū‚L=¨ Ђ ú‚ ˆƒĸ  Ģ… ˆƒ Ђ ˆƒ ƒ 4ƒ é‚ %ƒ ˆƒĸ  ļ… Q… ™…ĐL=¨ Ђ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˆƒ Έ ģƒ ™…ĐL:¨L=¨L˧L§¨ĸ Ō‚ ú‚ ˆƒĸc   …ĐLš¨ Á‚ ˆƒĸ Ō‚ ú‚ é‚ Đ‚ ˆƒĸ Ō‚ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚ ˂ ˆƒ ƒ 4ƒ é‚L§¨ĸ  ‹…Š Eƒ` ˇ‚ ƒ ˆƒĸ  Ģ… ˆƒĸ Ō‚ ú‚ ˆƒĸs  Ģ… Q… ™…ĐL Šĸ Ō‚ ƒ ˆƒ ˇ‚ ˆƒ ƒ %ƒ é‚ 4ƒ რ„ ƒ ˆƒ Ƃ ƒ é‚ĸ Ō‚ ˆƒ ƒ 4ƒ é‚L֝ ˛‚ ƒŠ Eƒ`Š ]ƒ ŧ‚ ˆƒĸ  é‚ ˇ‚ ˆƒĸ  é‚ ˛‚ ˆƒ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ é‚ ˆƒĸ+   …ĐL–Š ˛‚ ˆƒ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ é‚LŲŠ ˛‚ ƒ ˆƒĸ-   …ĐLŲŠ ˛‚ ˆƒ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ é‚ ˇ‚ ˆƒĸ  ‹… é‚ ˛‚ ƒ ˆƒ ވ ģƒ ™…ĐL@Ē ŧ‚ ˆƒ Á‚ ƒ ˆƒĸ   0„ ˆƒ ŧ‚ ƒ „ ˆƒĸ0  „ é‚ ˛‚ ˆƒ Ƃ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ é‚LŲŠ ŧ‚ ƒ ˆƒ ŧ‚ ƒ 0„ ĩƒ`Š…ŠF mƒĸD  Ԃ ˆƒ ü† é‚ĸB  Ԃ ˆƒ ˇ‚ é‚ĸ  Ԃ ˆƒĸ  რ„ ˆƒĸD  Ԃ ƒ é‚ĸB  Ԃ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ  Ū‚ĸ@  Ԃ ˆƒĸ  é‚ĸD  Ԃ ƒ ú‚ ˆƒĸ   Ģ…ĐLKŦĸD  Ԃ ƒ ú‚ ˆƒĸ    … ˆƒĸF  Ԃ ƒ ú‚ ˆƒĸ    … 9… ™…ĐLEĢĸD  Ԃ ˆƒ ƒ %ƒ é‚ 4ƒLđĒĸD  Ԃ ƒ ú‚ ˆƒĸ   Ģ…ĐL—Ģĸ  Ԃ ˆƒĸB  Ԃ ˆƒ ƒ %ƒ é‚ 4ƒ რ„ ˆƒĸD  Ԃ ƒ é‚ĸD  Ԃ ƒ ú‚ ˆƒĸ   Ģ… ˆƒĸF  Ԃ ƒ ú‚ ˆƒĸ   Ģ… Q… ˆƒĸF  Ԃ ƒ ú‚ ˆƒĸ   Ģ… Q… ™…ĐL(ŦĸB  Ԃ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸF  Ԃ ˆƒ ƒ %ƒ é‚ 4ƒ ú‚ Ū‚L—ĢĸB  Ԃ ˆƒ ƒ %ƒ é‚ 4ƒ ˆƒĸ  Ū‚LÔĒĸF  Ԃ ƒ ˆƒĸ  Ԃ Ƀ ˆƒĸD  Ԃ ƒ Ƀ ˆƒ ƒ ¸ƒŠ…ŠF Qƒ`LāLÂ#Small-C0.72 (23 Jun 1991)(C)1989 A.J.TravisNAME sh - Small-C command shell SYNOPSIS *sh DESCRIPTION pr =$0070 sr =$0074 tr =$0078 sp =$007C rsp =$007E asave =$007F param =$0080 osrom =$00F4 userv =$0200 brkv =$0202 irq1v =$0204 irq2v =$0206 cliv =$0208 bytev =$020A wordv =$020C wrchv =$020E rdchv =$0210 filev =$0212 argsv =$0214 bgetv =$0216 bputv =$0218 gbpbv =$021A findv =$021C fscv =$021E evntv =$0220 uptv =$0222 netv =$0224 vduv =$0226 keyv =$0228 insv =$022A remv =$022C cnpv =$022E ind1v =$0230 ind2v =$0232 ind3v =$0234 gsbuf =$0400 osurom =$8000 osrdrm =$FFB9 oseven =$FFBF gsinit =$FFC2 gsread =$FFC5 nvwrch =$FFC8 nvrdch =$FFCB osfind =$FFCE osgbpb =$FFD1 osbput =$FFD4 osbget =$FFD7 osargs =$FFDA osfile =$FFDD osrdch =$FFE0 osasci =$FFE3 osnewl =$FFE7 oswrch =$FFEE osword =$FFF1 osbyte =$FFF4 oscli =$FFF7 evs =$0078 ebrkv =$FF03 eevntv =$FF30 break =$8226 __trace =$8239 ext =$82AA addr =$82B2 addr_1 =$82B7 addr_2 =$82BC addr_3 =$82C1 addr_4 =$82C6 addr_5 =$82CB addr_6 =$82D0 addr_b =$82D2 addr_w =$82D4 sind_b =$82DE sind_w =$82E9 lind_b =$82FA lind_w =$8306 scall =$8314 inc1 =$8325 inc2 =$832A dec1 =$8334 dec2 =$833B sinc_b =$8345 sinc_w =$8351 sdec_b =$835D sdec_w =$836D swap =$837D push =$8388 pop =$83A3 drop3 =$83B5 drop2 =$83B8 drop =$83BB xchange =$83C9 scale2 =$83E1 scale =$83E3 add =$8410 sub =$841D mult =$8430 div =$8464 udiv =$8482 mod =$84C0 umod =$84DB or =$8539 xor =$8545 cand =$8551 casr =$855D casl =$8574 neg =$858B nz =$8599 eq =$85A0 ne =$85AB gt =$85B6 le =$85C3 ge =$85D0 lt =$85DB ugt =$85FF ule =$860C uge =$8619 ult =$8624 escape =$8643 _exit =$866F _open =$8678 _creat =$86AC _close =$86C3 _unlink =$86CE _stat =$86E3 _system =$86E8 __cmdlin =$86FC _read =$8727 _write =$873F _getc =$87BE _putc =$87E6 _vdu =$8811 _osbyte =$8819 _osword =$882D _osfile =$8848 _isalpha =$887E _isupper =$888E _islower =$889E _isdigit =$88AE _isxdigi =$88BE _isspace =$88CE _ispunct =$88DE _isalnum =$88EE _isprint =$88FE _iscntrl =$890E _isascii =$891E _toupper =$892C _tolower =$893E _toascii =$8950 _ctype_ =$8959 _strcat =$89D9 _strcmp =$8A5E _strcpy =$8AD5 _strlen =$8B2B _strncat =$8B79 _strncmp =$8C38 _strncpy =$8CEB _fclose =$8DC7 _fopen =$8DD7 _fgets =$8EAE _fputs =$8FFF _gets =$90F6 _puts =$91BB _printf =$9217 _fprintf =$9260 _sprintf =$92AF __doprin =$92CE _itoa =$9ADB _scanf =$9CD6 _fscanf =$9D15 _sscanf =$9D5A __doscan =$9D85 _atoi =$A929 __cmdini =$AA56 __enter =$AC85 pr =$0070 sr =$0074 tr =$0078 sp =$007C rsp =$007E asave =$007F param =$0080 osrom =$00F4 userv =$0200 brkv =$0202 irq1v =$0204 irq2v =$0206 cliv =$0208 bytev =$020A wordv =$020C wrchv =$020E rdchv =$0210 filev =$0212 argsv =$0214 bgetv =$Šüĸ ˙ ô˙†ôŽ0ūĸ  ˆƒLVĒĸ Žg(Œh(ĸ Ži(Œj( ˛‚ ƒ ˆƒĸ  ۅĐLF ũ"ĸ Žk(Œl(ĸ Žm(Œn(ĸ Žo(Œp(ĸ Žq(Œr(ĸ Žs(Œt(ĸˆ #ŽS(ŒT(ĸ #ŽU(ŒV(ĸ“ #ŽW(ŒX(ĸ› #Ž[(Œ\(ĸ ŽY(ŒZ(ĸ Ž_(Œ`(ĸĄ #Ž](Œ^(ĸą #Ža(Œb(ĸš #Žc(Œd(ĸŋ #Že(Œf(ĸĮ #ŽQ(ŒR(ĸ Žu(Œv( ˇ‚ ƒ ˆƒĸ  რ„ ƒ ƒ ˆƒĸ˙  Q… ˆƒĸ-   …ĐL<ĸÕ # ˆƒ ŧ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐL˛ ˛‚ ƒ ˆƒĸ  ۅĐLr ũ"L¯ ˇ‚ ƒ ˆƒĸ  რ„ ƒŽc(Œd( ˛‚ ˆƒ ƒ 4ƒ é‚ ˇ‚ ˆƒ ƒ *ƒ é‚ ;ƒLĸØ # ˆƒ ŧ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐLųŽk(Ŧl( 4ƒŽk(Œl(LĸÛ # ˆƒ ŧ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐLOŽm(Ŧn( 4ƒŽm(Œn(Žo(Ŧp( 4ƒŽo(Œp(LĸŪ # ˆƒ ŧ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐL–Žo(Ŧp( 4ƒŽo(Œp(Lĸá # ˆƒ ŧ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐLŨŽq(Ŧr( 4ƒŽq(Œr(Lĸä # ˆƒ ŧ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐL3ĸį #ŽY(ŒZ(ĸđ #Ž](Œ^(ĸ $Ž_(Œ`(Lĸ $ ˆƒ ŧ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐL‰ĸ  $ŽY(ŒZ(ĸ $Ž](Œ^(ĸ $Ž_(Œ`(Lĸ! $ ˆƒ ŧ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐLËĸ$ $ŽU(ŒV(Lĸ- $ ˆƒ ŧ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒ ^Š ¸ƒ ˆƒĸ   …ĐLŽs(Ŧt( %ƒŽs(Œt( 4ƒL ũ" ˛‚ ˆƒ ƒ 4ƒ é‚ ˇ‚ ˆƒ ƒ *ƒ é‚ ;ƒL𠲂 ƒ ˆƒĸ  ۅĐLT ũ" ˇ‚ ƒ ˆƒĸ  რ„ ƒ ˆƒĸL ' ˆƒ Պ ¸ƒĸL 'ŽM(ŒN(ŽM(ŦN( %ƒŽM(ŒN( 4ƒ ú‚ ™…ĐL¤L„ŽM(ŦN( 4ƒŽM(ŒN( ˆƒĸL ' Ģ…ĐLīŽM(ŦN( ú‚ ˆƒĸ.   …ĐLėŽM(ŦN( %ƒŽM(ŒN(LīL¤ĸĖ 'ŽO(ŒP(ŽO(ŦP( ˆƒŽM(ŦN( %ƒŽM(ŒN( 4ƒ ú‚ Ū‚ ˆƒĸ  Ģ…ĐL;ŽO(ŦP( %ƒŽO(ŒP(LųŽO(ŦP( 4ƒŽO(ŒP( ú‚ŽL(ŽO(ŦP( 4ƒŽO(ŒP( ˆƒĸ  Ū‚ŽL( Ē‚ ˆƒĸc  Ģ…ĐLŠĸL ' ˆƒĸ0 $ ˆƒĸ  ˆƒ `’ ĩƒĸ  ‹… ˆƒ 6# ģƒĸI $ ˆƒĸL ' ˆƒ ׍ ¸ƒŽg(Œh( ˆƒĸ   …ĐLũĸL ' ˆƒĸK $ ˆƒĸ  ˆƒ `’ ĩƒĸ  ‹… ˆƒ 6# ģƒŽg(Ŧh( ˆƒ Į ģƒĸ Žg(Œh(ĸ  ˆƒĸÆ  ˆƒ ˆ ¸ƒ ˆƒĸ˙  Q…Žu(Œv(ĸ_ $ ˆƒŽe(Ŧf( ˆƒ ׍ ¸ƒŽi(Œj( ˆƒĸ   …ĐL’Že(Ŧf( ˆƒĸa $ ˆƒĸ  ˆƒ `’ ĩƒĸ  ‹… ˆƒ 6# ģƒĸĖ ' ˆƒĸu $ ˆƒĸL % ˆƒ ¯’ ĩƒĸĖ ' ˆƒĸz $ ˆƒĸĖ % ˆƒ ¯’ ĩƒĸĖ ' ˆƒĸ $ ˆƒĸL & ˆƒ ¯’ ĩƒĸ„ $ ˆƒĸĖ & ˆƒ ¯’ ¸ƒŽY(ŦZ( ˆƒĸ   …ĐL8 Žc(Ŧd( ˆƒĸL & ˆƒ Պ ¸ƒĸŠ $ ˆƒŽc(Ŧd( ˆƒ Պ ¸ƒĸĖ & ˆƒĸL & ˆƒĸĖ % ˆƒĸL % ˆƒŽ[(Ŧ\( ˆƒĸ‹ $ ˆƒŽi(Ŧj( ˆƒ `’Š EƒŽc(Ŧd( ˆƒŽa(Ŧb( ˆƒĸ› $ ˆƒŽi(Ŧj( ˆƒ `’Š EƒĸL % ˆƒĸL ' ˆƒŽS(ŦT( ˆƒĸĸ $ ˆƒŽi(Ŧj( ˆƒ `’Š EƒŽm(Ŧn( ™…ĐL