Home
C Vu Volume 1 Issue 2 PDF
Contents
1. Yr Yr and or shar read the module y quicker this feature al as well facilities are provided rpreter based on the file at a time tc SO ry management side itor You can for example se t up a and switch between your real and EDIT it Mirage allows you file extension isn t wel them bet Ww it will be read from as being more versal lso appears in OS 2 ram Language Support Cc Most of Lisp Fortran exception of C compile This is then p ALPS Unsurprising a very powerful and debugger and profiler The two major C I hear you cry fast syst Languages under Mirag Most languages under Mirage a judging by the Pascal compiler provided for this em the popular languages are availabl BASIC and of course A to assembler source ra rocessed by the Mirage Assembly since Mirage was written complete with 1 le under Mirage assembl compil linker ar 12 Sy FY A view to load modules n different processes rather than disk tile than a ram disk ed languages ther than straight machine code Language Programming System in assembly language and Pascal e written in house also comes with the package also allows you to invoke a EDIT S37 ll suited to modular languages however All O Whe It is also possible to insert char
2. Date and Time get set and show in a variety of forms Command Line Parsing switches etc Numeric Conversion to from ASCII hex decimal etc Memory Modules de allocate local memory blocks Also implements a simplified version As well as the usual system calls found on any multi tasking OS Mirage has a facility known as bolt ons which are a convenient way of adding system calls These can be used for a variety of applications standard bolt ons include disk and sector caches printer spooler floating point support either in software or via co processors and a record management system called TRAP which stands for TRansaction Processor not to be confused with the TRAP opcode mentioned earlier Filing System The filing system under Mirage can best be described as bush rather than tree structured Instead of a root directory with branches leading from it Mirage has a potentially infinite number of directories at the same level This is pretty much the same approach as VM CMS although I feel it is better implemented in Mirage The reason for this approach is the large overhead caused by a true hierarchical filing system To move from directory to directory you use the CD or LOG command which functions in much the same fashion as Unix Typing CD on its own will tell you where you are for example SYS0 DSC0O UTIL and CD ALPS will change to the directory of that name assuming it exists of cou
3. Volume 1 C Vu program has more than one source file it will form of archiving or packing will be used on the library disks need to have a version of ARC or similar want to download software off one o will need an ARC program as the library files will format to save space amp download time If you cannot cope with an ARCed fil l result in th board wil individua Except fo lly source code form on disks indicated machine For run was given with some p this p that are indicated disk contains mate in rograms rog to of the fil r a few document the library list adaption in some cases ram at your own risk the library at the same that it works is the same prog EXE fil The library will to be only carry rial that an MS DOS COM or EXE ta ram is not nerated f malicious have b S The library does not at present including Amstrad P C W and I can arrange transfer of for the same charge as the dis bill ng If for one type of machine only can only be used by one type of machine Most library disks will be useable by any have a directory to itself This removes the that runs on your machine f the online systems CUG sponsors then you be available online Issue 2 No If you in ARC ted exceptions everything in the library must shareware
4. Beware that if you make use of complex declarations your code may be difficult to port to another language such as Pascal or Ada However if this is not too much of an issue you can sometimes create very sophiscated and efficent data structures this way For example typedef char fchr 4 fchr routine char r declares a pointer to a function that returns a pointer to a character array of four elements It can be assigned an address by fchr lookup char routine lookup and called by DGA Volume 1 f hrcptr cptr routine HELP On return be used to skip over using cptr If your compiler allows you to you can get some idea of how much mor form those characters xamin C Vu cptr will point to the start of a 4 element charact to the start of the nex more straightforward approach 5 Debugging the generated object code fficent the obj Ct Issue 2 array and can characters in assembler code is overa If you are unlucky enough not to be using a proper C development system which includes a source code debugger wasting time tracking down obscure bugs like C trace or Codeview you will probably be that a source code debugger would track down within minutes are some 1 Use the serial or print spare terminal direct all diagnostics so printer 2 Use assertions Asse
5. such as C this further subdivision causes very little overhead resulting in very little increase in execution time Let s recap To produce a structured program we must T Concentrate initially on high level tasks T Recognise special cases Produce simple single entry exit processes In the next part we ll look at moving from the problem being considered to starting to produce some code Apricot Computers Research amp Development Division is an extensive user of C in systems amp application software development for Apricot computer systems Apricot is expanding and looking for talented C programmers to work at the R D building in Edgbaston Birmingham The R D building is situated on Birmingham University science park and provides a very good working environment XENIX UNIX os 2 NETWORKS PARALELL SYSTEMS If you have experience in any of the above areas and would like further details then please write to the address below Tan Clough Apricot Computers p l c 28 Volume 1 C Vu Issue 2 Research amp Development Division 90 Vincent Drive Edgbaston Birmingham B15 2SP tel 021 427 3002 fax 021 471 2935 telex 334754 C USERS GROUP U K CUG UK is a special interest group for everyone interested in the C programming language and related topics such as compilers amp operating system design It attracts programmers of a wide range of abilities
6. true before you execut However debug your program without having to restort you can connect it but be careful of can end up wasting a lot o th ther ter port that they placing rtions allow you next statement assertions you can use your header directory ifd f DEBUG defin assert n e if exit 1 ls defin ndi assert n e Use it like this Switch define DEBUG include lt assert h gt Check assert 1 x p q x t QO If the assertion failed because x has the value 0 the following and stop Assertion number 1 failed 3 P on assertions redefine all functions the following e fprintf stderr Assertion number d failed n that x is non zero the diagnostics f good printer paper By predefining functions compiler what types of arguments it expects and what type it returns area f w tricks that you can use to help to a machine code debugger Her appear on the terminal to route diagnostic messages to the serial port of your computer and You can also use a inside large loops Place it n TG If you have a you to check that a specific condition is If your compiler does not support in a file called assert h in then the program will print you are telling the This Volume 1 C Vu Issue
7. 300 AND 1200 1200 CCITT AND BELL COMPATIBLE RUNS OFF A PP3 CALCULATOR BATTERY SUB MINIATURE CALL MONITORING LOUDSPEAKER JUST 109 25 POUNDS TO CUG MEMBERS 5 POUNDS OFF PRICE INCLUDES VAT AND CARRIAGE ONLY AVAILABLE FROM DIGITAL MATRIX LTD 75 Willow Road Solihull West Midlands B91 1UF Tel 021 704 1399 This modem supports the more sensible V22 standard instead of the silly amp antiquated V23 that many budget priced modems support V23 is all very well if all you are doing is downloading large quantities of information but having to upload at a snails pace 75 baud means that V23 is a poor choice for anyone serious about a 2 way flow of information A V22 modem will give a full 1200 baud speed in BOTH directions The 300 baud V21 standard is provided for calling older slower modems West Midlands Opus amp Dr Solomons Fido already support V22 operation and Chronos Lair is due to go V22 very shortly and may have done so by the time you read this The cost of putting your machine online is not as great as you might expect Under 110 pounds for a Discovery 1200P another few pounds for some communication software of your choice and the phone bill What many people dread when they think about a modem is the huge increase in the phone bill If you are sensible about modem use this is not as big a problem as expected The secret of economical modem use is to stick to off peak times Calling a BBS in your own local call area is 5
8. called good at jobs involving complex tex disk 6 is a version of the UNIX program is simil program comes with a useful Ss Its us n versi he Make i will a 4i tream edit e is for sed sc TWO can cope of a TE G 20716 16963 1680 2017 22142 6281 6785 10792 325 3809 3607 2813 14464 10544 16691 640 6374 31882 4864 short tour through the UNIX Dungeons amp fit onto the volume and the really is a jam packed volume xampl Disk 6 also contains seve ll deserving of f fur rea o mpts rce c mult atte f sou with ral ol ther interesti ode i real UNIX e shell it the ons of th AWK t manipulations non inte comment binary file rom images to any C programmer you are keen on the UNIX system and Library disk 6 will be of ree important UNIX system program maintainer f yours does not or you are just be useful th gene The In rac tor sed ript for ther mino in interested in UNIX Issue if you don t get Many C compilers pattern matching language called ration language third major program on some respects tive editing tasks converting a Pascal source r UNIX style utilities and future issues of C Vu and is very this The It to peopl to provide a UNIX like for common UNIX style utilities tasking background processes but otherwise T
9. downloading from this board can be very economical Dr Solomons FIDO is a very popular system amp can be hard to get onto at times but always contains interesting technical material The best way to get into contact with me is to leave a message on one of these boards amp I will reply Any articles uploaded onto one of these boards can easily find its way into the next issue of C Vu Keeping things computer readable makes life easier for everyone Letters Page A letter has flooded in from Colin Masterson the author of our series on structured programming Volume 1 C Vu Issue 2 I hope that readers might bear with me as I once more bang the drum about one of my hot topics that of commenting programs let s be specific commenting C programs As Mark Burgess seemed to be suggesting in a recent article in PCW perhaps the time has come to try to standardise in some way a level of commenting which together with structuring will improve the useability if I may use that word of our software As I see it when we write a function no matter how small we have three clear obligations These may be summarised as follows 1 Primary Obligation To other users amp the author a To provide sufficient information to allow anyone to call the function correctly and to make sense of any returned value b To inform the user WHAT action is performed 2 Secondary Obligation To author amp further details for user a To pre
10. pence for 5 minutes at cheap rate This works out at only 60p an hour for a useful amp entertaining passtime the BBS is long distance over a low cost route such as calling a Birmingham number from London the charge is only 25p for 5 minutes or 3 pounds an hour Normal long distance routes will cost 35p for 5 minutes or 4 20 an hour Modem communications is an exciting and absorbing hobby amp well worth getting into Volume 1 C Vu Issue 2 Digital Matrix also does an extensive range of other modems at higher prices contact Clive Warner at Digital Matrix for more details LIST OF BBS KNOWN TO CUG Chronosoft Lair 021 744 5561 300N81 V21 23 at present Digital Matrix 021 705 5187 1200N81 V21 22 West Midlands Opus 021 711 1451 1200N81 All speeds e Dr Solomon s FIDO 024 03 4946 1200N81 All speeds e Academics 021 705 9677 300N81 V21 23 e CIX 01 399 5252 All speeds You will find a warm welcome from the sysop on all of these boards if you say you a CUG member If anyone knows of any other BBS that have an interest in C I would like to know about them so that this list can be updated for the next edition of C Vu West Midlands Opus is well worth a call as it is participating in the international C programmers conference on ECHOMAIL There is much interesting material in the conference most of it is of U S origin The board runs V21 through to V22bis with MNP error correction as well so if you have a high speed modem then
11. 2 way you will be warned if you accidently pass a floating point value to a function does not char malloc unsigned int This says returns a that expects an integer or try to use the result of a function that return a value An example of a predefined function is that function malloc takes one argument of type unsigned int and pointer to a character 4 LINT your source code or use the highest possible warning level on your This ensures that the compiler will report on possible bugs that are normally ignored at the default warning level on non portable constructs or on wasteful code LINT is a utility available under UNIX and some other operating systems that performs a very strict check of your source code compiler 5 Use the C Vu technical help section If you are stuck with a really persisten they can contact the softwa be a product of the compiler itself t bug get in contact with either Martin Houston or Steven Palmer If t help then they ll do their best to find someone who can or even re house who developed your compiler to see if the bug could That is what a user group is for C PROGRAMMERS GUIDE TO SERIAL COMMUNICATIONS by Joe Campbell Howard W Sams amp Co ISBN 0 672 22584 0 22 95 As the ti Review by Martin Houston tle suggests this is a book for anybody interested in serial RS232 communications from
12. Q SGTTY HQ TOK CQ In the last part we spoke about structure in terms of ignoring detail C Vu Issue 2 There should be few problems in getting it to work on other of CUG Library volume 14 though One word of warning it needs lots of memory to run 22142 Squeeze program that prepared these squeezed files 6756 Program needed to UNSQUEEZE the larn files 741 Instructions for getting larn off the disk 421 Batch file for unsqueezing all larn sources 385 Instructions to MS DOS linker for larn 4858 Library needed for DOS larn version g are the larn source files 4199 CONFIG CQ 1585 CREATE CO 9828 19305 DIAG CQ 7583 DISPLAY CQ 8991 1608 GLOBAL CQ 11575 HEADER HQ 9352 1763 IO CQ 16016 IO IQ 9460 18133 MAIN IQ 10321 MONSTER CQ 29332 6411 MOVEM CQ 7529 NAP CQ 2060 18384 PWD HQ 1168 REGEN CQ 2783 1373 SCORES CQ 14987 SEX LQ 329 1880 SIGNAL CQ 3872 STORE CQ 15053 4013 Structure Part 2 go on to formalise our thinking We can see f to the layou BASIC to produce structured code We mean two 1 Logical That is Tas 2 Presenta That is task on These two are completely independent t too Int things by st the logical sequenc k D follows task C follows task B follows task A tion the page E Ei Task Task A Task D Task C rom what s been said structured language to ensure a st By Colin Masterso
13. Volume 1 C Vu Issue 2 The Magazine of the C Users Group U K Editorial Welcome to the second issue of C Vu the magazine of the C Users Group UK Since the last issue membership of the group has been going up in leaps and bounds mainly as a result of a large plug in the user group section of Personal Computer World this month By whatever route you came to join CUG UK you are very welcome As you are probably aware CUG UK has two main aims supporting the C language itself and also other areas which relate to it One of these other areas is of course operating systems As if to prove the point we take an in depth look at the Mirage OS in this issue and future issues will cover OS 9 Minix and distributed operating systems As with any publication C Vu relies heavily on its readers for articles reviews etc Many of you may be fairly new to C and going prematurely grey trying to get the hang of some of C s more idiosyncratic features Don t just sit there write to us with your problem and we will try to help If enough people are interested we will start a series on C for beginners or perhaps the occasional article on certain areas pointers being the obvious example This applies to any articles in C Vu as well if you don t understand anything write in and we ll attempt to explain it SPECIAL OFFER It s special offer time again Last issue we brought you the MIX C system at under half price this time we bring yo
14. a long integer It should be re written as lseek fh OL SEEK BEG All floating point literal constants are stored as double rather than just plain float So the following Hh loat count count 8 95 will elicit a Data Conversion warning from some compilers because the 8 95 has type double which has to be converted down to float If you feel picky about minor warnings you can get round this by casting the literal count float 8 95 Again beware of calling functions with literals if they are expecting an argument of type float All mathematical libraries tend to use arguments of type double as a sort of safety catch You should also include lt math h gt so that the compiler can catch and warn about unintended conversions 2 Operator Precedence You have probably come across the case where assignments inside a conditional such as while c getchar have to be bracketed otherwise they will be interpreted by the compiler as while c getchar Take some time to learn the C operator precedence levels There are some other catches for the unwary For example if p amp OxCO 0xC0 does NOT mean what it seems The operator has higher precedence than the amp so the expression must be re written as if p amp 0xC0 0xC0 14 Volume 1 C Vu Issue 2 A good C compiler should catch the f
15. a programmers or technically literate users point of view fe RS232 serial communications on microcomputers I made much different clearer when the historical development from 100 years ago The book starts with actually explaining fundamental principles of serial communication such as the ASCII character set and principles of serial communication Joe Campbell has a great knowledge of his subject and presents reasons why things are the way they are rather than just dry facts This approach makes even dull parts of the subject interesting reading This 655 page book covers just about everything anyone would need to know about found the history of serial technology fascinating The whole business of MARK SPACE START amp STOP is of the concepts is properly traced and it is historical serial communications is based on ideas little The Xmodem amp Kermit protocols are explained and special attention is given to explaining error checking such as CRC RS232 interface actualy do and fully documents th command set On the C programming side the book concentra of a terminal emulation amp file transfer program portable communicating with the serial hardware through a virtual UART A listing of the complete program suitable for the IBM PC is provided in an Appendix of the book In conclusion this book is a min co
16. acters into r processes the nly able C programs or n you This including Pascal librarian SO ar with the ALPS is urce code So what about and very well written C Vu Volume 1 Issue 2 However with C Swifte decided to use Lattice 3 03 via Metacomco of Bristol The main problems with Lattice are as follows executable code is not re entrant or shareable This is partly the design of C itself and also because Mirage uses the 68000 as its base processor which has no built in memory protection execution speed is very slow For example 68000 ST Lattice runs 652 Dhrystones second the result is 1250 Dhrystones second an 8 Mhz under TOS under Mirage on Using Megamax C Attempts are being made to improve the situation is a great pity considering that C is the ideal development that this situation was not cleared with Lattice C but high level language up some time ago it really for system Conclusion As I was reviewing Mirage one thing became very apparent a great deal of thought has gone into most aspects of its design and implementation Obviously being a fairly young operating system Swifte had the chance to learn from the mistakes of other operating system designers This is not to say that i hasn t faults but both Sahara and Swifte are actively involved in the continual development of Mirage so where possible these ar
17. ce99 plus VAT and the form it takes Mirage is often provided on disc but comes in ROM cartridge form for the ST All versions of Mirage are largely object code compatible and the disk formats are similar Mirage for the ST consists of an 128k ROM cartridge a single sided disk and a user s manual Once the cartridge is pushed into place preferably with the machine off and with the boot disk in place a warm boot can be performed Although the Mirage disk format is unlike GEMDOS the 9 Volume 1 C Vu Issue 2 ST s native operating system the first 19 blocks are left untouched so that you can format a disk under GEMDOS perhaps using one of the improved formatters giving you 800k rather than 720k and or use some of these blocks for a bootstrap loader The Mirage support disk contains a loader to transfer execution to the cartridge By doing so Mirage actually uses less memory than the ST usually does as TOS the collective name for GEMDOS GEM etc hasn t had a chance to initialise Mirage defaults to a single user system so you can start to use it without having to login in the conventional multi user way From here you have access to all the facilities of Mirage In addition to the shell kernel and filing system as much of Mirage as possible has been packed into the ROM cartridge Terminal device and I O board drivers and some of the more common utilities are included This leaves more RAM for what you want to do as wel
18. d that anyone thinking about Am I wrong When the surcharge is made will mean that no one will to the disk 21 4 pounds is made for a library the data base syst ERS ONLY at the following rates 00 00 WNUN 350 Some of ld like to be put in touch with other members that the same program then this can be arranged through the pages a sort of programmers dating agency in the library such as the x language are complex enough the programs already lisp lisp interpreter and bawk text processing to need some joint effort to get to grips with all 40 0 F 4 00 surcharge on above rate orders hav with a single sided drive but lations would have at least a tell me d th disk will hold two standard volumes if formatted as double sided If you want a second volume on the same t a single sided 3 1 2 disk then please say so when The 3 1 2 drive on my XT machine where single sided disks so any single sided I know that 520 ST s come C compil If so please the library is kept will to be processed order other than one of the tem is in operation it will be This takes to every service for the library ry program then you may have any standard volume from the for no charge or are special returning an improved The Librarian reserves the right to judge what is a sensible contribution to qualify for a free vol
19. e TRAP opcode accompanied by a 4 bit ie 0 to 15 inclusive immediate operand puts the processor into supervisor mode and executes an exception routine via a vector table This table usually sits at the start of memory it can t be moved on the 68000 and on the ST is the only area of protected memory Brief Overview Of System Calls Available Under Mirage Exception Handling in addition to the internal TRAP exception the 68k family can respond to general errors like division by zero attempting to address non existent memory etc Interrupt Management from I O devices 10 Volume 1 C Vu Issue 2 Global Communications Area IPC inter process communication and peripheral control Scheduling the Mirage scheduler is priority driven the 32 priority levels are split between real time preemptive and non preemptive and ordinary tasks The priority can be adjusted and scheduling enabled and disabled with these functions Task Creation creation and management Semaphore Operations standard P amp V Event Management de allocate un set and wait on of memory compaction as found on Apple Macs amp CDC Cyber mainframes When possible modules are moved down in memory so that they are contiguous Bitmap Management de allocate bits from a bitmap Terminal Management receive and transmit characters between terminals Terminal Functions terminal independent control File Management creation deletion locking etc
20. e being sorted ou If you are an Atari ST owner Mirage gives you an introduction to multi tasking operating systems application ce xcellent read _cheap_ If you have a serious perhaps in one of the areas I mentioned earlier Mirage is rtainly well worth a look Prices For the Atari ST version prices are as follows All prices exclude VAT and P amp P de MIRAGE OS 99 POUNDS LATTICE C 129 Swifte Pascal 99 Swifte Basic 99 Swifte LISP 59 Swifte FORTRAN 77 129 ALPS 49 tails Sahara Software Ltd Unit 5 11 Bondway Business Centre 69 71 The Bondway LONDON SwW8 1S0Q Tel 01 735 3806 and are correct at press time and pricing on other systems contact Everything You Wanted To Know About C By Steven W ise Palmer For further Volume 1 C Vu Issue 2 The following tips and tricks were collected together after a study of some potential problems encountered by beginners to C Space does not permit me to include many other similiarily useful tips If you have any to contribute please send them to the editor 1 Constants All integer literal constants are stored as integer unless you supply the L suffix Beware of calling a function that expects a argument of type long using a literal For example lseek fh 0 SEEK BEG may not work because lseek expects the second argument the offset to be
21. ed to branch C Vu off into many separat the programs from the to it then you may re submit the improved version for the library programs will be of In umes will The original this way the development of Issue 2 library and have made full acknowledgement version will same program can be paths Anybody submitting an improved version of a library program will be entitled to an equivalent amount of new If you indicate that you woul are working with of C Vu them library material at no charge ORDERING UO is available to CUG MEM Library material fully inclusive COST Your own 5 Our 5 1 4 Your 3 1 2 oun 31 2 Inclusive 1 4 disk standard volume disk standard volume disk standard volume disk standard volume Specially selected material eA 31 2 this does not suit some machines disk then the charge is only 1 00 extra PLEASE NOTE that if you wan you order not format through my Apricot F2 think sided drive I should double The surcharge of standard prepared disks possible to look out a selection of files matching certain criteria The surcharge will apply I hope that my efforts in sorting out the ver n time however so multiple of 360k of data selected library volumes If you are donating material version of a libra library copied on a disk with hello worl
22. er even fairly inexperienced users would probably be happy with the above comments The foregoing excusing from further commenting is on the grounds that the data types involved are simple an array of characters being considered moderately simple Were the function to involve parameters of structures unions more complex indirection or to manipulate global variables then this simplification could no longer be considered valid In such cases at least the NAME CALL METHOD GLOBALS and RETURN fields should be completed I don t deny that adding comments at the head of a function may take a few extra moments but it is well worth it In these days of 1M byte on a floppy and 40Mbyte hard discs the space consumed by such comments is not worth mentioning I am also aware that in an eagerness to get something going there will be a reluctance to add comments during early development That is fair enough But every now and then before it s too late take the time to go back through and add some little header to the start of the functions As an example here is a header for a function from a program I am currently working on s NAME locate_item locate next item in file CALL METHOD long locate_item pge fp int pge address of present page number FILE fp file being read GLOBALS end of file set TRUE if EOF reached token used to hold next character limiter current
23. es are 8 characters although I can t really see amount of difference I suggest RY so cS the H directory is where and BOLT is where bolt ons reside the fil long ra character in the the ext rotocols p Systems Issue 2 and is one of the with a 4 to specify the entire path le specification is not and standard Mirage reading MS PC DOS and ANSI compatible tapes t you contact Sahara Software who market Mirage if you have particular requirements Of interest to ST owners Sahara intend to have a CD ROM driver as soon as they can get their hands on a unit Utilities Over 100 utilities are provided with Mirage so naturally I don t intend telling you about all of them All the usual file related utilities are available rename copy delete change ownership etc As with output redirection the syntax is a little unusual instead of rename oldname newname you would use rename newname oldname Commands exist to kill suspend and revive processes Mirage has a number of very useful utilities relating to processes background task with a virtual terminal virtual terminal s as required EDIT usual a scr edito compiler int the input buf n oriented fer of othe xt d wry Modula 2 to edit one On the memo da at ta tempt into to is obvious memory Incidental
24. from beginners to professional systems programmers The main activity of the group is the production of a magazine C Vu membership covers six issues which contains articles of interest to the C programming community An extensive C source code library is also available for the use of members Please complete the form below and send it with a cheque or postal order for ten pounds made payable to C Users Group U K to Martin Houston 36 Whetstone Close Farquhar Road Edgbaston Birmingham B15 2QN Name Address Hardware Interests machines used Software Interests which C compiler used etc If you are already a member but wish to change the way you receive C Vu please enter your membership number here Preference for magazine please tick Paper copy Standard 360k PC format 5 1 4 disk Single sided 3 1 2 disk suitable for Atari ST PS 2 amp Apricot NOTE Due to the higher cost of 3 1 2 disks at present the group will require a surcharge of 50 pence per issue to get the magazine in this way Hopefully the need for this surcharge will disappear Please do not pay the surcharge in advance If you select 3 1 2 disks each issue of the magazine will tell you if the surcharge is still in force Please then send the 50 pence or return the disk ready for the next issue of the magazine 29
25. function le then a kind message to the SYSOP of the s being left un ARCed for you to download t be in LIB fil es If a library this will be Some but cover the Apple Mac or any of the CP M you have one of these machines then contact me the volume of your choice by modem k would be but you will also have to pay This version of the program is included You In most cases it is the executable me as the source but I cannot guarantee a Trojan rom the sources by myself that not all Formats will be the phone Another alternative would be for you to find a friend with a machine that can read one of the disk formats and do a serial transfer over a direct RS232 line HOW IT WORKS The way the library works is that any C code donated to catalogued and a CUG Library header comment prepended reproduced below CUG hands to be recorded library program will re submit it to the library so the work they have done software for the benefit of all is variable lt and gt to is intended to allow the change histo that toge In this way all may learn information It is hoped that any CUG membe Here is a sample comment the file ry of r that the library will be This comment the file while in improves a all may benifit ther and produce good anything between from ROKK RR KKK KR KK KKK KR KK IR KK I IR OR KK KR KK OK KK C Users G
26. he programs seem to be quite MS DOS to other machines why not give it a ontains several comms protocols The SEAlin Source for LU format LUMPS seve Undoes the Squeezes ral files LUMP and SQU ry into 1 effect of lump compresses files Types a squeezed file Unsquezes Gives a di Types a me Splits one Combines many iow lev su iow lev su Terminal p Functions Kermit pro a file mber of a big file small for for pport ppo rog ram for CRC gram fo Pep rectory of a LBR LBR library H H h H calculation r IBM PC Files are supplied shell MS DOS Sadly under try the twin subjects of serial communications amp kermit amp SEAlink EZE and k comms protocol functions the ARC archiver library manager library nto many small ones iles into one big one BM PC serial BM PC serial for IBM PC comms comms the library is volume 14 This volume contains Dragons game of Larn source of squeeze amp unsqueeze is provided This the Larn game should work under UNIX systems and F EZ SQU ED Volume 1 also MS DOS machines Contents SQ C USQ Cc README UNPACK BAT LARN LOK LTERMCAP LOB The followin BILL CQ DATA CQ FORTUNE CQ HELP CQ MAIN CQ MOREOBJ CQ OBJECT CQ SAVELEV C
27. is fully operational but I feel it is a goal well worth attaining The header will usually only be put in the main module of any multi module program that obviously belongs together such as the xlisp sources If members want to go through and header each and every file then they are welcome to but doing so intelligently requires considerable knowledge of the structure of the program The poor librarian cannot be expected to be an expert on every program in the library LIBRARY LISTS Each issue of C Vu will contain a list of what is in the library In addition to this a seperate totaly up to date list is available to anyone who sends a large S A E together with 20 pence in stamps to cover expenses The library list is also available for download from the Chronosoft BBS or Dr Solomons FIDO details in C Vu If you are looking for something in particular then contact me and I shall try to find it for you LIBRARY ORGANISATION Each library disk will be dedicated to a specific subject area as the range of material in the library permits For instance material that is strictly of interest to people with IBM PC compatable hardware will be isolated from generaly portable material This division is made on the barest aquaintances with the program I cannot guarantee that everything in the generic section is suitable for all machines the specific machine divisions are for pr
28. item delimiter char ASSUMPTIONS pagestr has been set up with valid newpage sequenc File is opened in BINARY mode RETURNS EXIT CODES 5 Offset in file of start of next item OL if EOF STRUCTURAL NOTES Locates the next item in the file using the current limiter char Check all the time for a possible newpage code and keep a copy of it if it looks as though it could be one Steps are While not EOF CHAR If token could be newpage then s if its last 7 Volume 1 C Vu Issue 2 one needed If so then bump page counter else just save token If token isn t a delimiter then we ve found the next item return offset get next token If EOF CHAR then return error flag and set end_ of file VERSION 1 01 AMENDMENTS LEVEL A SELECT lt HANDLER lt CONTROL CALLER sort file lt main Now here are the hierarchical levels into which I divide my programs with reference to the code by Martin Houston in C VU CONTROL PREPARATION HANDLER SELECT DATA SERVICE CONTROL LEVEL Top level function main itself or one called by main If any I O is carried out at this level then it will be to obtain high level command choices only passing control to the next level HANDLER Initialisation is carried out by calling functions at the PREPARATION level In the case of adshell main is the CONTROL level which calls the HANDLER level f
29. l as alleviating the problem of errant programs corrupting the OS the ST has minimal memory protection The Shell The standard shell under Mirage will execute a command file called AUTOBOOT CMDEF which is a convenient way of configuring the system In addition to the execution of external commands the shell has a sophisticated control language To differentiate between internal and external the period is used so the if statement takes the form IF expression THEN action Other statements include support for subroutines assignments and terminal input either a single character or a line and output enable and disable write a line and support for the Mirage terminal control functions Output redirection is also supported using the usual gt and gt gt to create overwrite and append to an output file The actual format is a little strange though to redirect the output of a program called fred you would enter gt OUT FRED rather than the Unix equivalent FRED gt OUT Input redirection is not available in the same way although you can do something similar from within command files In short the Mirage shell offers many of the facilities found in Unix shells although it is a much cleaner design and probably faster The Kernel Access to the multitude of system calls available under Mirage a brief overview is given below is through the TRAP opcode of the 680x0 family For those not familiar with the processor th
30. l that we present the name and parameters to prospective users The function definition itself may sometimes be considered sufficiently clear to explain the action and calling requirements I would argue however that this is rarely the case If our functions are created in a generalised form as they should be to allow re use then the exact purpose of each parameter must be clearly stated For what I call Service Level functions at the bottom of the hierarchy using only simple data types then it may be quite plain what is required But is it Consider the case int strcount s c char s int c It is our responsibility to ourselves and to other first time readers to at least provide a minimum of explanation At the very least for these low level ones this is acceptably done with brief comments around the definition int strcount s c returns number of times c is in s char s the string being scanned mE C char to count Xj This should be sufficient for a user to make use of the function and to understand its returned value We have fulfilled our obligations la and 1b albeit somewhat briefly 6 Volume 1 C Vu Issue 2 Notice that even in this simple case coded as int i for i 0 s s Lote CSS SS ey return i we have made no statement about boundary conditions what if c NULL if s is zero length if no occurrences of c are found what maximum length for s Howev
31. memory on a PC Ce same program but got here s takes a memory snapshot for debug purposes A hex J loader see document Hex dump of a file 22 Volume 1 DR IMER HAT EXBIN EXCNV mma Cc C C C As you can see the sort of soft interest utilities First this similar tools with your system anyway tware tool It contains public domai 3305 1778 2120 5721 4961 Cc Cc isa Displays timed execution of a command finds and prints module id strings C Vu file h ader info onverts he onverts he materia t is a ve come with a ma ke Also on the dis BAWK file into C is certainly wel Library volume 8 is another a tains not one but Each of these is a lot o con neither shell both give a Library volume 11 deals with several library managers including ARC library management SEALINK C ARCSRC lt DIR gt LAR C LUMP ic UNLUMP C SQ C TYPESQ C USQ C LDIR LDIR DOC TYPE C BSPLIT C BCOMBINE C PC_ COM AS CASYNC ASM IBMTTY ce COMM MNU CRC a KERMITPC C KERMITPC HLP Last in our sources of to feel specific but may be adaptabl lar to BAWK s availab X TO TO x dump x dump of us I e unde e rsion of t program nowadays but curious about how make works then this k is a version of the UNIX The AWK language has been
32. mmunications amp how to program them It is very SIT The book covers what the pins on an ntire Hayes Smartmodem tes on the design amp implementation The program is designed to be of very useful information about serial readable and a worthy Volume 1 C Vu Issue 2 addition to any C programmers library THE MINIX OPERATING SYSTEM Much of C programming is influenced by the UNIX operating system and its derevatives UNIX was the first operating system to be written in C indeed it was the reason C was invented MINIX is a re write of the UNIX operating system in C that does not contain any source code belonging to AT amp T and therefore does not require a very expensive UNIX licence to run Don Forbes has agreed to act as co ordinator for interest in MINIX within the C User Group The next issue of C Vu will have a page dedicated to MINIX devotees If you run a MINIX system are thinking of doing so or would just like to know more then Don can be contacted at Don Forbes 35 Upland Road South Croydon Surrey CR2 6RE E THE CUG UK SOURCE LIBRARY INTRODUCTION The CUG library is intended to be a collection of public domain C source code brought together so that anyone who wishes to may use the programs and further develop them both as an aid to their own learning and enjoyment and to improve the stock of C software in the Public Domain Very few real programs are ever written f
33. n Identifying structure cruc tured result W t s just as easy terestingly i onc tructure of you understand vents that a pr indenting use Task B this category It would be po 24 We now that it is not sufficient just to use a e must apply some thinking to use languages like the principles ogram takes the appearance of the printed statements for each Page headings names and whitespace fall into of variables ssible to present a program Volume 1 C Vu Issue 2 which was completely structured from the logical point of view A calls B B calls C and C calls D and E But its use of variable names indentation and layout give no clue as to the flow or structure Similarly we could have a beautifully presented program this is a nice heading Task boil kettle Task Fill kettle Task boil kettle Task fill teapot Task make tea Task fill teapot In this case the program logic is not present In a strict definition of the phrase structured programming we mean logical structure I would suggest however that the two should be considered so closely related as to be inseparable Let s assume therefore that by structure we mean a logical breakdown of a program into hierarchical levels wher ach level is presented in such as way that this logical structure is clear We can now move on to con
34. n the effort to understanding something about specific programs such as the EMACS editor to share that knowledge by writ Well here goes with some of the things initial library offerings Library volume 1 is a good place to sta to aid in the job of writing other C programs What follows is an annotated form of what the MS DOS DIR command lists the disk as The number is the size in bytes of the file CCHK C 4356 program FAULTY C 104 ABOUT C 3667 ABOUT DAT 7424 CFLOW 26750 CFLOWX G 25084 CFLOWX H 2688 CFLOW DOC 2944 XC C 20149 XC1 22483 XC2 27095 XC DOC 1536 DUMP C 2877 DUMP2 C 6412 MEMCLEAN DOC 3712 MEMCLEAN C 6096 SNAP C 2987 ZAPLOAD C 13349 ZAPLOAD DOC 8832 HD G 2439 th rt ting a review for C Vu about it at I think may interest you in the It s a collection of software tools A bracket amp comment checker very simple lint type A small faulty C p A help lookup prog wi Th is is a C prog X quired header Docs for cflow amp Th Th ree variants o th a database of fo G th rogram to demonstrate cchk ram C function call usage ram structure analyser tended features for cflow r cflow amp cflowx Flowx the xc C cross referencer S wer onc by different rou Docs for xc A simple and a more lavish hex dump program a program for cleaning
35. ograms that are OBVIOUSLY only of interest to owners of a specific machine Vhen a library volume is strongly suited to one particular type of machine in this way the list will say so to save people ordering disks that are of no use to them Needles to say the C Users Group can offer no warranty as to the quality and fitness for any purpose of anything in the library Public Domain programs are almost bound to have bugs in them it is hoped that the work done by group members on the software that comes into the library will improve this situation UPDATING THE LIBRARY The initial offerings in the library have mostly been culled from the offerings of other shareware libraries amp BBS downloads Some material has been donated by CUG members At the moment organisation of the library is in its early stages and the quality of the software patchy I have endavoured to cut out on duplication and the banal leaving a reasonable base of material on which to build a strong UK Public Domain resource LOO Volume 1 If you have significant inclusion taken one of improvements to the library Any improved versions made available to the membership as separate vol to the member who has done the improvement work le as the original volume number can be traced and the development remain availabl the programs under out control allow
36. ormer and warn the user about possible missing parenthesis 3 define macros Except for simple macros place the definition part of all define preprocessor statements inside brackets 1 This avoids any ambiguity arising from apparently innocent usage such as the following defin TAB E BAS H 0x2000 define TABLE LIMIT TABLE BASE 0x1000 define TAB E SIZE TABLE LIMIT TABLE BAS E sizeof long TABLE SIZE is definitely NOT set to the correct value The macro will actually be interpreted as 0x2000 0x1000 0x2000 4 assuming sizeof long is 4 bytes or 0x2800 The second and third defines must be rewritten as define TABLE LIMIT TABLE BASE 0x1000 define TABLE SIZE TABLE LIMIT TABLE BASE sizeof long If the macro takes any arguments always place the arguments inside the definition in brackets define isdigit c c gt 0 amp amp c lt 9 Finally never call a macro with an expression that modifies itself or any other part of the expression in that same macro For example the following are very suspect isdigit c isdigit c 1 isdigit getchar 4 Type declarations Complex type declarations while they are fun to explore and show off in listings are one of the biggest headaches in C maintainability
37. rogram They should be entirely portable and form the glue which allows DATA level and possibly SELECT level functions to do their job I have said enough but look forward to comments from others Yours faithfully Colin Masterson Mirage A Multi User Real Time and Multi Tasking Operating System For The 680x0 Atari ST Version Reviewed By Phil J Stubbington Introduction Considering its parentage it is hardly surprising that C is so widely used in systems software In the writing of an operating system it is estimated that more than 70 could and often is written in C However no C compiler will ever produce code as efficient in terms of size and speed as a competent assembly language programmer In 1980 Swifte pronounced Swifty Computer Systems a UK software house started developing Mirage for what was then the new 68000 processor from Motorola Inc Since then we have seen the 68010 68020 and just beginning to appear is the 68030 all offering improvements over the previous version whileretaining a high degree of code compatibility The decision to write Mirage purely in assembly language has obviously paid off Today Mirage can be found in hundreds of commercial and educational sites throughout the world First Impressions The version of Mirage I shall be looking at here is for the Atari ST any model although a mono monitor is essential The main differences between this and any other version are the price
38. rom scratch Most things are developed using and adapting parts from previous programs The library will serve as a toolkit of parts to aid in the process of developing new ideas May PD Software amp Shareware libraries carry some C source code amongst their wide selections but the CUG library is specially dedicated to making source code available for programmers to develop with rather than being a source of ready to run free programs This feature makes the library useful to people with a wide range of machines and interests If you have a machine with a C compiler that is able to read one of the disk formats the library is offered on then we have something to offer you Many other library services cater only for the strict IBM PC clone market The CUG library does not care if you have a PC an Atari an Apricot an Archimedes or even a Unix system The two disk formats that the library directly supports are the PC 360k standard for 5 1 4 disks and the 720k double sided 3 1 2 format used by IBM PS 2 i Fo Apricot Atari ST and most of IBM compatible portables Single sided variants of the above rmats are also available if requested To read a library disk you will need to be able to understand Microsoft MS DOS disk format WITH sub directories i e DOS 2 0 or above The library disks will use sub directories to partition files into groups that belong together If a 18
39. roup Inquiries to Edgbaston KKK KKK KKK KKK KKK KKK KKK KKK KKK KKK KKK KK KKK KKK KKK KKK KKK kkk KKK KKK KKKKKKKK F F F F E a File name Program name Source of fil Purpose Changes U K M Houston 36 Whetstone Clo Birmingham B15 20N ENGLAND lt name of this file gt C Source Code Library File lt disk num gt Farquhar Rd could be a library or an executable gt lt where th lt what it does gt lt name of program to which file belongs which lt who what when amp why major changes hav been mad gt original came from before the library gt ORK KK I I RR I RA I I RR I RK RK KK KK 19 Volume 1 C Vu Issue 2 lt disk num gt is the library disk number that the file comes from 0 means that the information has not been filled in The library will try to ensure that each file that goes out will have at least a blank header but it is largely up to the members to fill the headers in and keep them up to date I feel that this is a bit of discipline will be of great benefit to the CUG members as it will enable a database of what is in the software library to be kept so that answers can be supplied to such questions as Can you find me a function that does pattern matching or Are there any assemblers in the library as C source It will take a while before the library enquiries database
40. rse To list the contents of the current directory you enter DIR with wildcards if required and to list the directories on a device you would use DIRS remember you don t have a root directory so you can t enter DIR DSCO The first part of the file specification SYSO is mainly for use ina networking or multi processor environment The SYS part is the name given the node in the network and the 0 is the Node Slave Number NSN The NSN useful in systems where you have multiple processors on the same node and mainly a result of system security The next part DSCO is the device name and drive number Mirage is very flexible in names given to devices and network nodes so although we use to indicate a disc drive we could equally have called it FLP or HRD Tii to is is DSC Volume 1 UTIL is the direct pre defined direct tory name limited to four characte C header files ar As with most as complicat character ex extension ma In addition disks disks drive and standard G This is by no means an exhaustive to drivers rs are also available for a variety of network p for ram disks EMDOS format disks on the ST filing systems ted as it looks tension king a vast tories under Mirage searched for C Vu list For example it is seldom necessa you have the equivalent of a home directory Filenam
41. scovery 1200P pocket modem 300 300 and 1200 1200 baud communications for under 110 pounds Brought to you by Digital Matrix Ltd SERIES o Structure Part 2 Due to lack of space this has been held over until the next issue Colin Masterson ARTICLES o Get Online With Our Modem Offer How to keep in touch by modem Martin Houston o The C Source Library o A Wander Through The C Source Library How the library is organised what it will cost you and what s in it Martin Houston o Minix How to get in touch with our Minix coordinator REVIEWS o Mirage A versatile operating system for Motorola systems Phil J Stubbington o C Programmers Guide To Serial Communications From ASCII to XMODEM via KERMIT Martin Houston JOB OFFERS o News from Apricot Issue 2 Volume 1 C Vu Issue 2 GET ONLINE WITH OUR MODEM OFFER By Martin Houston The CUG is now active on a number of Bulletin Board services listed below If you do not have a modem then you are missing out on the ability to download items from the library for no charge and send in your comments in a form that can easily get into the magazine We have negotiated a special offer on a modem that should suit the needs of many CUG members at a very keen price It s pocket sized comes in its own carrying wallet and should work with any micro equipped with an RS232 port it s THE DISCOVERY 1200P POCKET MODEM HAYES COMPATIBLE AUTO DIAL AUTO ANSWER 300
42. sent a structural summary b To note any peculiarities about the method employed such as recursion calls to BIOS DOS or T O which may lead to portability restrictions 3 Tertiary Obligation If function complex or part of suite a Indicate caller function and or related functions b Indicate function level in the program hierarchy c Indicate version amendments and revision history d Indicate any test or QA programs I shall propose a function header shortly which consists three parts corresponding to these three obligations each part comprising a number of fields Not all parts will be relevant in every case The style and layout of the header may be left to the individual but some points may be worth noting Consideration should be given to a standard form which would enable the use of utilities and filters to perform certain documentation and indexing tasks automatically eg through the use of GREP and the like Since most people make use of a text editor with block copy and insert facilities it makes sense to have a single dummy header and insert this into the source as required Furthermore the NAME and CALL METHOD fields may often be directly copied from the function definition avoiding repeated typing ED an example of the header is given later on The need for information as noted under obligation 1 must surely be clear to everyone For ee Volume 1 C Vu Issue 2 complex functions the explanation of func
43. sider more formally what structure may be taken to mean iet s look at our example again 25 Volume 1 Is Not a very structured looking flow kettle full right level we ve asked all rule for structured programs i Why Well for a start consider i working Let s say it s endin why How has it got there at fill kettle There are a around testing the how it even Now conside tually falls out at C Vu Start Boil Kettle Issue 2 Kettle already End boiled Take off Is lid lid off Fill kettle Put on lid Plug in kettle Fuse gone Boiled End 2 End chart but why not Everything is at the the right questions True but another golden s so called single ent rying to find out why g at blown fuse all the Or consider a case whe n in ris ITIda Off r this flow diagram for the same thing 26 time and we don t re operation seems to stick finite number of times we might have looped lid and full conditions and no way of knowing how many ry single exit routines function wasn t know this or Volume 1 C Vu Issue 2 Start Clear flags Reset TIMER Is flag kettle boiled OK boiled ie flag TIMER timeout out P Open lid Full fill Close lid Plug in flag Fuse fused OK Increment TIMER End In this case the task has a single entry and a single exit Con
44. sidering sub parts each sub part also has a single entry and single exit Only in the case of the first decision box does this appear to have two entry possibilities The rule in this case is that such a situation would be catered for by a loop instruction eg for do while etc Never jump back with a goto Translated to C this might become a while construct Finding out wha getting stuck at eg while kettle not boiled end of while aif is going on is now filling the kettl og as S quite straightforward Now if we are there is only one possible path which got us 27 Volume 1 C Vu Issue 2 there Further even although there may be no final use for it including a variable such as timer can be very useful We can use this to check and monitor the progress of a loop and as in this case to detect an error condition Notice that the use of a for loop allows this variable to be handled and also provide loop termination eg for timer 0 timer lt TOO LONG timer if kettle boiled flag OK break Identifying or coding single entry and single exit tasks can become quite tricky with a more complex situation It becomes easier with practice and familiarity with the language however If loops are becoming nested and intertwined to such a degree that their purpose is becoming obscure then the time has come to create another level In languages
45. tions and parameters may be quite lengthy For simple functions very brief The need for the following parts may be less obvious In general though it ought to be possible to fully understand the implications of using a function without having to study the code itself Recursive functions or ones with a large quantity of local variables place a heavy demand on the stack This is worth noting If calls are made to routines such as interrupts this has an effect on portability and should also be noted For more detailed study or more involved functions a few lines of pseudo code and a note on peculiarities is always appreciated Accepted it is often difficult to know what may be termed peculiar in a C function But if you shut your eyes and squint at the function it doesn t take long to spot the parts for which he ll wonder what on earth I m doing that for becomes an appropriate comment Finally the hierarchy This becomes very important once the number of functions breaks the 10 or 20 barrier it s simply too much to remember what calls what I ll reiterate later my suggestions for levels see recent letter in PCW and use the adventure parser by Martin Houston as an example Absolutely no offense intended Before I get called down for asking everyone to write a novel at the start of a three statement function let me at once suggest that these three obligations may in many cases be reduced to just one the primary It is always essentia
46. u the rather natty Discovery 1200P Pocket Modem for under 110 pounds Full details inside CUG UK is still in the early stages of development so you may notice that things seem to change from one issue of C Vu to the next The astute amongst you will have noticed the page numbering went a little awry in our first issue So to make sure this doesn t happen again I ve dispensed with page numbers altogether People have a wide variety of printers font sizes favourite paper sizes etc so future issues of C Vu on disk or bulletin boards will be in PROFF format or something similar When I have decided upon this the necessary programs will appear in the CUG UK library although as PROFF format is pure ASCII it is not essential to have the programs to be able to print out C Vu THE NEXT ISSUE Please get your letters articles and reviews to me AS SOON AS POSSIBLE Preferably on disk in straight ASCII no margins please Mail can be sent via Martin Houston address on the back page If everything goes okay the next issue of C Vu can be expected in late March Phil J Stubbington Editor Volume 1 C Vu CONTENTS REGULARS o Editorial A few words from the editor o Letters Page Commenting programs how and why o Everything You Wanted To Know About C Tips and Tricks from Steven Palmer o The Back Page How to receive C Vu on disk and a membership form to get your friends interested SPECIAL OFFER o The Di
47. ume sending on it will not get you off paying the two quid Volume 1 C Vu Issue 2 CONCLUSION I hope that this has given you an insight into how the library is intended to work Hopefuly the library will become group as there is much in it as topics you find the charges are resources to run effectivley so it cannot be a fr servic th EO over 300k of C sourc cod amp related mat e focal point of the activities of the r discussion and development I hope reasonable the library takes a lot of time amp machine Two pounds for rial is very good value for money and goes some way towards contributing to the running costs of providing the library One final word the libra is used well with people contributing as well as taking then it could grow into a valuable resource for the C Users Group amp all C programmers ry is only going to be any good if it is USED If it A wander through the C library The C source Code library is in its early days at is some interesting material that has been submit by Martin Houston the CUG Librarian the moment but already there ted In this article I will draw your attention to some of the things new in the library that you may like to try out I do not claim to have any programs that I mention below X tensive knowledge of any of the What we need is for people who have put i
48. unction parse It is likely that in a real adventure a PREPARATION level function would be called prior to the while loop and that possibly the entire while loop and request for user input would be contained within a CONTROL level function which was called from main HANDLER LEVEL Supervisor type level parse in this case is determining an action function to be called to actually do something Like an executive in a multitasking system HANDLER level functions may actually do little themselves but pass control to the functions which arrange for the work to be done SELECT LEVEL help and fexit are SELECT level functions They control the real work being done At this level the function will call an actual data gathering or issuing function to perform an action SELECT level functions may be able to call a number of functions at the DATA level according to conditions at their entry time In this case printf is a DATA level function sending out actual data DATA LEVEL Stand alone functions which accept fairly simple data types and carry out work under control of the 8 Volume 1 C Vu Issue 2 SELECT level scanf printf and your own particular input routines are examples of DATA level functions SERVICE LEVEL The tools and dirty work level Library functions like strcount are examples of this level They operate on only fundamental data types and do not rely on global variables which are unique to a particular p
Download Pdf Manuals
Related Search
Related Contents
Farenheit Technologies DVD-22T User's Manual USER MANUAL - Steinfurth Mode Emploi Guide - 2013-2014_V5 Healthcare - Swissmedic Yamaha NX-E200 Owner's Manual Dirt Devil Factory M3320 TverTrip Profi v4.0 User Manual Copyright © All rights reserved.
Failed to retrieve file