{"id":76,"date":"2011-02-07T15:01:18","date_gmt":"2011-02-07T15:01:18","guid":{"rendered":"http:\/\/www.binarydevotion.com\/?p=76"},"modified":"2011-02-09T12:22:35","modified_gmt":"2011-02-09T12:22:35","slug":"dice-c-development-system-amiga-computing-85-april-1995","status":"publish","type":"post","link":"http:\/\/www.binarydevotion.com\/?p=76","title":{"rendered":"DICE C Development System (Amiga Computing 85, April 1995)"},"content":{"rendered":"<address>(Editor&#8217;s note &#8211; 1995 review.\u00c2\u00a0 Now Matt Dillon has made DICE available to all, and RIch Drummond has created a <a href=\"http:\/\/aminet.net\/dev\/c\/dice-3.16.lha\">distribution packaage on Aminet<\/a>)<br \/>\n<\/address>\n<p>Since last April, some Amiga developers have been a bit nervous. The reason? SAS decided to drop the Amiga version of SAS\/C, effectively removing one of the main development platforms on the machine and leaving users of the system with bugs that will not be removed.<\/p>\n<p>However, all was not quite lost; Matt Dillon&#8217;s shareware compiler called DICE was gaining so much support that it was decided to really work on the thing for version 3 to create the ultimate C package. This was no small undertaking and hence the package has moved to the commercial world under the wing of Obvious Implementations Corporation.<\/p>\n<p>It used to be the case that you could only get the commercial package directly from the States, which not too many Europeans were eager to do. It used to be the case, that is, until Fourth Level Developments (the people who do the Mo-miga floptical system amongst other things) took on UK distribution along with a fairly sizeable chunk of Europe for good measure.<\/p>\n<p>With a minimum of persuasion, a review copy was promptly forthcoming from the nice people at Fourth Level and soon five disks and a chunky manual arrived on the desk. Packed onto these disks is a not unimpressive range of stuff, including the compiler, a source level debugger, visual make utility, code profiler, two editors, Commodore Include files for 1.3, 2.0 and 3.0, essential utilities such as enforcer, support utilities and a multitude more. The manual makes a refreshing change too as it is made less daunting by the inclusion of a cartoon on the cover which somehow convinces your eyes that the inch and a bit thickness really isn&#8217;t going to be that bad.<\/p>\n<p>DICE is designed to work not only on high end machines with X Gigabytes of memory and more hard drives than you can shake a stick at, but also on a more modest two drive, 1MB system -\u00c2\u00a0 it is the maker&#8217;s intention to continue this support whilst adding to the features of DICE.<\/p>\n<p>&#8220;Enough preamble!&#8221; comes the cry from an overworked editor. This can mean only one thing; they want to know what it&#8217;s like.<br \/>\n<!--nextpage--><\/p>\n<h2>What&#8217;s it do?<\/h2>\n<p>Installation is achieved through the standard Installer utility for both hard drive users and floppy users. Options on the completeness of installation are given, along with a choice of which version of the Include files you want to use. This section passed without a problem.<\/p>\n<p>Once installed, a hulking great &#8220;ReadMe&#8221; file is thrown at you containing details of bug-fixes, known bugs, release notes and a licensing agreement which could teach Satan&#8217;s little workers a thing or two about contracts.*<\/p>\n<p>From this point on, you&#8217;re on your own to a large extent. Thirteen example projects are included to introduce you to the joys of VMake and I&#8217;ll admit to feeling a little bit lost at this point and longing for a tutorial.<\/p>\n<p>However, things soon clear up (as good Doctors say) and my eyes were opened to something that will probably revolutionise the way in which C programmers work. Just what VMake is is difficult to pin down in words but basically it&#8217;s a complete windowing environment that can integrate the DICE package together visually, therefore eliminating the need to remember CLI options for compilers, linkers, debuggers and more. I say &#8220;can&#8221; because DICE can also be completely used from the CLI by those who want to.<\/p>\n<p>Despite this inclusion, I guess that even the most die hard shell addict will give in and use VMake &#8211; it really is excellent. It pulls the whole of DICE together so well that the reference section of the manual seems a little superfluous.<\/p>\n<p>The best way to describe DICE&#8217;s operation with VMake is through an example: to start your project off, you simply give the name<a href=\"http:\/\/www.binarydevotion.com\/wp-content\/uploads\/2011\/02\/DICE-A.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-medium wp-image-77\" title=\"DICE-A\" src=\"http:\/\/www.binarydevotion.com\/wp-content\/uploads\/2011\/02\/DICE-A-300x225.gif\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.binarydevotion.com\/wp-content\/uploads\/2011\/02\/DICE-A-300x225.gif 300w, http:\/\/www.binarydevotion.com\/wp-content\/uploads\/2011\/02\/DICE-A.gif 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> of the executable file you want to build. Next, add the names of files that you want to be part of the package. After that, double clicking on these names brings up the system&#8217;s default editor to edit them. Once happy with your modifications, you can choose to bring RCS (Revision Control System) into play by &#8220;Checking In&#8221; your file, but you don&#8217;t have to use this if you don&#8217;t want to. When everything&#8217;s hunky dory, click on the make button and watch the program compile without having to touch a makefile! All dependencies are worked out for you and better still, prototypes are generated automatically thus eliminating the need for manually transcribing the functions from each of your files into one file for inclusion.<br \/>\n<!--nextpage--><\/p>\n<h2>Power is nothing without control<\/h2>\n<p>As mentioned above, RCS is included with DICE too and is completely integrated inside VMake. For those not familiar with this tool -and I wasn&#8217;t- it is certainly worth the ten minutes it takes to get it working. RCS has been ported from the *nix world and simply keeps track of revisions of your source files. Before editing a file can be done, it must be &#8220;checked out&#8221; of the RCS system. When editing is finished, it is checked back into RCS and the program prompts for a revision comment, which is logged along with the date and revision number (which is automatically increased). Special RCS keywords can be embedded inside source code to be expanded, showing the author, history, creation date, author&#8217;s inside leg measurement and more &#8211; again this is automatically done. Best of all, if something with your latest version has gone horribly, messily, panic inokingly wrong and you suddenly find you need to get back to four revisions previous, you can save your hair, sanity and Amiga from abuse. RCS keeps track of all changes made by storing the differences from revision to revision, allowing earier versions to be reconstructed. In short, RCS is pretty invaluable and using it within VMake is a doddle.<\/p>\n<p>When errors do crop up in your code, VMake drops you into the editor of your choice telling you what the problem is and where to find it. With the AME editor (an Amiga specific enhancement of the *nix memacs editor which is DICE&#8217;s default), multiple files can be edited at the same time so you can flit happily between your error log and source code file. Any AREXX knowledgeable editor can be integrated into the DICE package &#8211; configuration files are provided for CED, ED and a few others along with instructions on how to make another editor of your choice work well with the DICE system. While on the subject of editors, it&#8217;s worth mentioning another corker of a utility that DICE comes with: DiceHelp. This package integrates with your editor using AREXX so that when the cursor is over a function call (for example, OpenWindow), the program will search out the information from any autodocs that you have on your system and display it in another window. It also finds help on all DICE link library calls, too.<\/p>\n<p>Pretty much every aspect of the system is configurable from VMake. By using the Options sub-program, the majority of flags for each stage of compilation can be set such as target OS, target processor and so much more. The list is endless; it&#8217;ll suffice to say that you really shouldn&#8217;t need to touch the CLI no matter how hairy you want to try and make things, even if you want to generate code to be burned into ROMS on a system other than an Amiga!<\/p>\n<p>Programs can also be compiled to produce run-time profiling information to give a full view into how many times a function is called, how long each call takes on average, where it was called from, who it calls in turn and overall execution time. This claims to be accurate to 20 microseconds and provides you with a mine of information, armed with which you can spend your time profitably optimising your code.<\/p>\n<p><!--nextpage--><\/p>\n<h2>Get the little (de)bugger<\/h2>\n<p><a href=\"http:\/\/www.binarydevotion.com\/wp-content\/uploads\/2011\/02\/DICE-B.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-medium wp-image-78\" title=\"DICE-B\" src=\"http:\/\/www.binarydevotion.com\/wp-content\/uploads\/2011\/02\/DICE-B-300x225.gif\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.binarydevotion.com\/wp-content\/uploads\/2011\/02\/DICE-B-300x225.gif 300w, http:\/\/www.binarydevotion.com\/wp-content\/uploads\/2011\/02\/DICE-B.gif 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>The source level debugging tool (DD) can be invoked from VMake too, simply by pulling down a menu item. As debugging goes, this is pretty good. Breakpoints can be set at source, the produced machine code can be viewed (and interleaved with the C if wanted), commands can be stepped through or over making this a very powerful tool.<\/p>\n<p>For speed freaks, compilation can be sped up by precompiling header files. A support program called DiceCache allows for files with a certain suffix (for example .c or .h) to be cached for use with DiceCache aware programs (such as the whole DICE suite). Support is also provided for programmers wishing to exploit DiceCache too.<\/p>\n<p>The support tools also include a file compression utility which really makes floppy running a viable alternative. Instead of Commodore&#8217;s include files taking up one disk to themselves, they are compressed down to less than half of a disk. This seems to work in much the same way as disk expander as compression is invisible to the operating system.<\/p>\n<p>Another nicety that I immediately fell for was auto opening of libraries. DICE&#8217;s linked libraries intelligently open system libraries as needed and tidy up after themselves too.<\/p>\n<p>The compiler itself seems respectably fast, much the same speed as SAS\/C until DiceCache is enabled when everything can get pretty nippy. DICE provides compatibility with a whole host of other systems, ranging from SAS\/C and MANX to *NIX. The link libraries are also pretty rice, with a whole host of functions providing *nix code compatibilty. Amiga specifics are also well catered for and it was nice to see that the example projects included a DOS handler, an exec device, a printer driver and a library. While comparing with SAS\/C, when I tried recompiling the Tabby driver an annoying bug concerning stack handling disappeared &#8211; one down, only a few left to go&#8230;<\/p>\n<p>Bugwise, it was nice to report that DICE appeared very stable; the only problem I had was a crash upon exiting the debugger whilst the program I was debugging had not completed. This probably wasn&#8217;t a bug in the tool but more of an oversight on my part.<\/p>\n<p>The manual deserves a mention, too. Despite a C compiler being one of the most boring products known to man (or woman), the authors have managed to keep the style light yet informative while retaining the technical side too. This is quite an achievement and is probably helped with little humourous bits which are well placed so as not to annoy even the most serious of techy nerds. &#8220;This is a test of the emergency page blanking system. This is only a test&#8221; provides more of a grin than &#8220;This page is intentionally blank&#8221; ever could. For reference, it is spot on, but for a newcomer to the package would be nice to see a few pages by way of a tutorial, explaining RCS and VMake by example. The fact that it&#8217;s spine bound and not ring bound is a marginal niggle too: the review copy now has numerous Post-it notes acting as bookmarks into the most used bits.<br \/>\n<!--nextpage--><\/p>\n<h2>Conclusions<\/h2>\n<p>Overall, the level of integration and sheer completeness of the whole system impresses me. People who have used Turbo C on a (shudder) PC will know just how easy managing a large project in C can be- DICE makes the task even easier. It&#8217;s good to know that as you read this, someone is beavering away to further improve the package too. I know what I&#8217;ll be writing the next Tabby driver in&#8230; Fourth Level, the cheque&#8217;s in the post!<\/p>\n<p>Verdict:<br \/>\nFor a C development kit, you probably can&#8217;t do better. The integration is superb, it does a good job of compiling and it&#8217;s half the price of its now unavailable main rival!<\/p>\n<p>Ease of use: 9<br \/>\nEasy to set up, easy to install, easy to understand, easy to manage complex projects with<\/p>\n<p>Implementation :10<br \/>\nOutstandingly well implemented and feature rich<\/p>\n<p>Value for money: 10<br \/>\nWith version control, visual make, and the completeness of the package this is reference class<\/p>\n<p>Overall: 10<br \/>\nWhat was a potentially catastrophic situation for developers is rosy thanks to DICE and OIC.<\/p>\n<p>Dice 3.0 costs \u00c2\u00a3129.25 and is available from Fourth Level Developments, 31 Ashley Hill, Montpelier, Bristol, BS6 5JA. Tel 0117 955 8225, Fax 0117 955 9157, Email Dicecsales@flevel.demon.co.uk. Student discounts are available, please contact Fourth Level for more information.<\/p>\n<p>Footnotes:<br \/>\n*- Apologies to T Pratchett and N Gaiman, esqs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>DICE C package, now freeware, as reviewed in 1995 for Amiga Computing.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,10],"tags":[],"class_list":["post-76","post","type-post","status-publish","format-standard","hentry","category-amiga","category-reviews"],"_links":{"self":[{"href":"http:\/\/www.binarydevotion.com\/index.php?rest_route=\/wp\/v2\/posts\/76","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.binarydevotion.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.binarydevotion.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.binarydevotion.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.binarydevotion.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=76"}],"version-history":[{"count":0,"href":"http:\/\/www.binarydevotion.com\/index.php?rest_route=\/wp\/v2\/posts\/76\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.binarydevotion.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=76"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.binarydevotion.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=76"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.binarydevotion.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=76"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}