Currah MicroSource
Hardware: Add-on
Currah Computer Components Ltd · 1986 · Pound sterling 44.50
FORTH and Assembler cartridge with debug.
Discussion
Nobody has started a thread about this yet.
Remarks
Assembler + Forth + Debugger
Documents
- CurrahMicroSource(EN).pdfInstructions English958 KB
- CurrahMicroSource(EN).zipInstructions English29 KB
- CurrahMicroSource(EN).txtInstructions English90 KB
Other files
- roms.htmlRemote link English
Files and rights
No permission is on record either way. Screens and pictures are copied here on a take-down basis: if you hold the rights and want something removed, say so and it goes.
Scores
Elsewhere on the web
- WorldOfSpectrum 2 votes9.00
In the magazines 22
Your Sinclair #6Jun 1986 · p.40
Max Phillips
HARDWARE BONANZA Yeeeehaah! Max Phillips rounds up all the latest Speccy add-ons and pens them up... Currah Microsource Quadhouse £14 Reviewer: Max Phillips Now this is clever - a ROM pack that plugs into the Speccy to give instant access to an assembler and a debugger plus a noddy version of Forth. Unlike assemblers that load from tape, this one doesn't take up valuable memory and it doesn't go away when you crash the Spectrum. Neat, huh? The assembler itself is excellent; two-pass assembly, macros and conditional directives as well as complex maths in hex and decimal. You can assemble or list to the screen and memory or out to any OPENed stream - such as a microdrive file or a second Spectrum connected via the Interface 1. Shame the editor is so naff; you enter your source program as a normal Basic program, each line beginning with REM! it works but the screen gets very messy. And you don't get useful things like block move, find, auto-number and so on. To assemble the program, you enter the line LET assemble=1 before your source lines and run the Basic program. The debugger's also excellent - it gives you a full-screen 'front-panel' display showing all the Z80's registers and relevant memory locations. You can single-step or trace your program or execute it up to a certain point, all the time seeing what's going on inside the machine. Or you can opt to watch a block of memory or switch to a more limited register display in order to speed tracing up. There's no disassembler but otherwise it's great - especially recommended for beginners. Now for the bad news. MicroSource Forth is completely potty. You enter your Forth commands as REM # statements in a Basic program preceded by the line LET forth=1; to execute them you RUN the Basic program. But the idea of Forth is that everything happens the moment you enter it - so there's no stored program as such. And it gets weirder - right down to using % for definitions instead of the : everybody else uses! It's not fast, it's not interactive, it's not standard, it's not... The whole thing comes with an adequate if bland manual but without a through-connector for other add-ons, so it must be the last thing stuck onto your Speccy. Still, if you need a decent assembler/debugger, it certainly shouldn't be the last thing stuck on your shopping list.
Sinclair User #48Mar 1986 · p.95
John Lambert
THE FORTH SOURCE The best things come in small packages. That describes the recently released Currah Source from Quadhouse. In a self-contained ROM cartridge it has a full-function-two-pass macro assembler. Forth and a debugger, all of which can interact with Basic. It is also compatible with Interface 1. Currah, as regular readers of Sinclair User will remember, also made the Speech - a speech synthesiser - but went down last year. Quadhouse has bought the rights to the Source and is now producing it. Both the assembler and Forth work by storing their information in Basic lines, in the form of a REM statement followed by either '!' to denote an assembler line or '#' for a Forth line. Multistatement assembler lines are possible. This is its main limitation as the editing facilities of Spectrum Basic are fairly primitive. Despite that, the range of features and the ease of use more than compensate. THE ASSEMBLER Using Basic in this way means that you do not have the normal renumber, block move, and block delete commands which you find in assemblers with their own editors, such as Devpac, but as a bonus you can use Basic variables within the assembler. You could have a line such as: REM ! LDHL,base Where base has previously been defined. In theory, there is nothing to stop you re-assembling and running code a number of times within the same program using different values. Operands can be calculated within the assembler, mixing Basic variables, trigometric functions or plain numbers in decimal, hex and binary. Basic strings can also be imported as required. The best feature of the assembler is the ability to use macros, the assembler equivalent of a Basic procedure. Parameters are passed to the macro and on assembly the value of the parameter at the time is used. Unlike a subroutine, recursion is allowed - the macro calling itself - up to any level. Conditional assembly is also catered for. Assembly can either be direct to memory or, if desired, to a channel. That channel can be to a microdrive file, RS232 or Net if Interface 1 is attached. You can generate listings in a number of formats, to a choice of channels. If the Source only contained this assembler it would be worth the money, however you also get Forth. FORTH The Source Forth is loosely based on Forth-79 and is a 16-bit integer only. Over 70 words and six control operators are predefined and the user dictionary can be linked to those or another user-defined dictionary. Great variation is allowed in the way that Forth can be used, either in a single line or as a series of routines, in a similar manner to the BBC assembler. When invoked, each valid Forth line is interpreted until a non-valid line is encountered. In that way any number of separate blocks of lines can be used. Like the assembler, Basic variables can be used within Forth, and that allows for an easy mix of the two languages. The only things it cannot handle are multi-dimensional arrays. There is not enough space here to list all the predefined words and features. They are reasonably extensive, but not up to the Melbourne House - Abersoft - standard. Most omissions, however, can be catered for by dropping back into Basic, and then back to Forth. This Forth is for the serious enthusiast; Source has to be plugged into run the programs and so is only useful for people who write programs for their own use. Given that, many people will find it invaluable. DEBUGGER In addition to all the above you also get a debugger. This allows you to step through any part of the Spectrum ROM or RAM and display and/or alter it. There is also a single step monitor. The monitor has the normal facilities to set breakpoints, jump into routines, plus the ability to single step subroutines or alter the 'front panel' display to show just those registers/memory addresses you require. Given the limitations imposed by basing the assembler and Forth in Basic lines, Source works very well. The advantage of having these programs in ROM can not be overstated. The assembler on its own makes the Source good value, with Forth and the debugger thrown in it is excellent value. While Source is not intended for the computer novice, for the enthusiast it is a must. It costs £19.95. Quadhouse Computers, [redacted].
Figure 1. Reserved Variables Assemble Forth Loader Debug Forsvl Forsv2
Figure 2. Assembler Pseudo-Ops ORG Origin LIST To channel n OBJ Object code to channel n OPT Various options DEFW DEFine Word DEFB DEFtno Byte DEFM DEFine Message DEFV DEFine allophone DEFS Reserve Space EQU EQUate a label MACRO Start of Macro definition ENDM End of Macro definition ASIF Start if conditional assembly END END of conditional assembly
Crash #25Feb 1986 · p.95
Paul Gardner
GOING FORTH.. A long, long time ago, there was a little firm called CURRAH, and the people at CURRAH had a dream... They dreamt that they could create a magic box that would give the mysterious 'Spectrum User' powers beyond imagination. Unfortunately, CURRAH went bust before their dream became reality, but their black box that gives you FORTH, an Assembler and a debugging tool, all from within BASIC, is now available from Quadhouse Computers. At £19.50 Paul Gardner finds it hard to resist. FIRST, A LITTLE HISTORY Back in early 1984, MicroSource was conceived as an idea. It was originally to be a ROM based BASIC compiler and assembler package. It soon became apparent though, with the prices of ROM chips as they were, that the BASIC compiler would either have to be quite limited or expensive to produce. The next idea was to offer a Forth compiler and an assembler. That was possible because of the compact nature of Forth code. It was finally designed and tested but then CURRAH went into liquidation. MicroSource was not forgotten, however, and the rights to the package were bought by DK'tronics in mid 1984. Then it was forgotten. Now, more than a year after it was finally completed, Quadhouse Computers have negotiated the rights to distribute MicroSource, and at a much lower price than was originally intended. THE PACKAGE The final MicroSource package is a plug-in ROM based module that gives you access to Forth, an Assembler and a 'Software Front Panel' debugging tool. The box itself is similar to the CURRAH MicroSpeech package, but smaller. It is another 'last in the line' add-on for the Spectrum, so you will need a motherboard of sorts if you want to plug in any other products that don't have a through connector. The MicroSource circuit holds two chips, a 4K masked ROM and a small ULA. The ROM is switched in whenever a new variable is created. Because of this it is necessary to make sure that the Interface 1 variables are installed first if you have an Interface 1 attached - either cause an error or do a CAT of your microdrive. THE ASSEMBLER The assembler is a full Z80 assembler that supports macros with local labels, conditional assembly, powerful pseudo-ops, various number bases and an expression evaluator that allows you to import the contents of pre-defined BASIC variables into machine code. The assembler is invoked by a statement: LET assembler=0 and the assembly routine then follows this statement as a list of REM ! lines eg: 810 LET assemble=0 820 REM ! org 32000 830 REM !start ld a,2 840 REM ! defm a$ 850 REM ! ret 860 - (basic program continued) - The contents of the variable a$ are imported onto the assembly routine during assembly and occupy the bytes reserved by the DEFM pseudo op. Any labels used in the assembly routine are set up as BASIC variables and can be used directly in a BASIC program. So for the above routine, RANDOMISE USR start would call the routine. The assembler outputs the machine code it produces either directly into memory, or to any opened channel if you have an Interface 1 fitted. Object code produced can be saved onto microdrive files or even sent over the network. For non microdrive owners the assembler will print a 'map' of the object code locations, so that you can save it to tape using the usual SAVE 'name' CODE routine. As your source code is assembled, the assembly listing produced can be output to screen, printer or again, to any opened channel. Listing 2 is an assembly listing of the routine contained in the demonstration program. THE FORTH The Forth is invoked from BASIC by the statement: LET forth=0 after which the Forth system will execute or compile the following lines as Forth code. Like the assembler, the Forth lines in a program start with a REM statement: 890 LET forth=1 900 REM # 2 DUP + 32000 C! 910 REM # % newword 100 10 DO I. LOOP; 920 REM # newword 930 - (basic program continued) - For technical reasons, any Forth definitions are started with a % (percent) sign instead of the usual : (colon). Forth definitions are compiled into a dictionary which can be saved to tape or microdrive and later re-loaded and linked into the dictionary, although only if loaded back into the original memory locations. The Forth language supported is a small subset of Forth '79. Most of the omissions cover virtual memory, double length number handling and most of the useful commands for creating your own data and language structures. Some useful additions include the ability to pass variables between BASIC and Forth and the ability to pass parameters into, and then call, machine code routines. Listing 3 gives the full list of Forth words supported. Those marked with an asterisk differ from the standard in some way. DEBUG The debugging part of the package is a 'software front panel' that allows you to step through machine code routines while displaying the contents of all, or some of the Z80 registers and a section of memory. Listing 4 shows a screen dump of the form panel, as it views the machine code that was assembled from the demonstration program. Debug also allows you to display memory contents as screens full of hex bytes or ASCII characters. There are a number of commands that allow you to selectively step through machine code routines, with the option of following, or not following, subroutine calls as you wish. For all the potential of Debug as a tool it is badly let down in two respects. It is very difficult to follow a machine code routine that is simply displayed as hex bytes. If only the current instructions were displayed as Z80 assembly mnemonics it would be easier to use. The other problem concerns print-outs. I use an old Kempston printer interface and when Debug tries to send the display output to my printer the entire system crashes! However, I have been assured that Debug works perfectly with Interface 1 and any serial port printer, or the original Sinclair printer. THE DEMONSTRATION PROGRAM This simple demonstration has a main BASIC part that sets up a string of 3072 characters of mixed character codes. The program contains three 'subroutines', one in BASIC, one in Forth and one in assembly language. These routines are functionally identical in that they will convert the string in Z$ so that all the lower case letters are changed to upper case ones. Before any of the routines are called, the Forth lines need to be compiled and the assembly code needs to be assembled. After that the test string is set up and each routine is used to convert a copy of the test string. The retrospective timings for the routines are some indication of the speed advantage to be gained by not using BASIC for the repetitive or slow sections of a program: BASIC 100 seconds Forth 30 seconds M/C 0.05 seconds BUGS It is unfortunate but there are some. Given the history of this product, we are unlikely to see a bug free ROM being released. Apart from the error in Debug which stops it printing out to a Kempston printer interface, there seems to be no serious bug in the Assembler-Debug part of the package. The most serious bug I have found is in the Forth. Contrary to the Forth '79 standard, in this version you can use the word ."" (dot-quote) outside word definitions but not inside word definitions! For you BASIC fans, that's like having a version of BASIC that won't let you PRINT text strings written as part of the program... For similar reasons you may as well not include comments in your Forth programs because if you're not careful they cause some very spurious errors that you will never find. One other 'bug' is that you can only transport the values and addresses of simple variables between the BASIC, Forth and assembly language. This means that you cannot easily get Forth to do processing on BASIC arrays. This is a real pity, as array processing is one of the most time-consuming elements of BASIC programming. CONCLUSION The assembler itself is worth the £19.50 that is being asked for the whole package. If you are aware of the bugs in the Forth then it is easy to evade or avoid them. The manual is very good and explains things in just the right amount of detail. The program listed in this article should show you some of the power the MicroSource offers you. I shall certainly buy this one! (High praise indeed- ED) MicroSource costs £19.50 from: Quadhouse Computers [redacted]
THE DEMONSTRATION PROGRAM Three subroutines in different languages achieve the same thing: turning lower case characters into upper case characters - a tedious example, maybe, but it shows how you can take a BASIC variable (Z$ here) and use it in three separate languages!
The Assembly listing produced when MicroSource assembles lines 920 to 1180 of the first listing.
The Forth vocabulary supported by MicroSource.
The screendump of a typical Debug Front Panel display - in this instance, displaying the machine code routine, again derived from lines 920 to 1180 of Listing 1.
ZX Computing #23Feb 1986 · p.14
Ray Elder
'HARDWARE' 'ZX looks at some new addd-ons for the Spectrum' We are used to extravagant claims here at ZXC, and when this small wedge shaped bit of plastic with an edge connector on the thin end arrived we were not terribly excited. Even Rodney Holland's glowing letter - 'extraordinary ... grand title product...over £18,000 and eight months to develop' - only raised a knowing glance. But as a serious programmer on the Spectrum I was in for a treat, this is a little marvel! What is Microsource? Well, it is really three units in one which combine to produce one of the most powerful tools for the dedicated programmer. The unit provides you with an ASSEMBLER, a FORTH interpreter and a versatile DEBUG or Monitor. Accompanying it is a 38 page manual which provides all the instructions needed to operate the beast and is satisfactorily clear and concise. As with all similar programs no attempt to teach machine code or FORTH programming is made and the user is either already proficient or will have to learn from another source. The assembler produces standalone code which is portable while the FORTH interpreter is machine (or unit) dependent. Both can be used from within BASIC and commands for each are held in REM lines. Assembler prefixed by '!' and FORTH by '#' and BASIC variables can be used to pass parameters to and from either. The assembler is a two pass assembler and all Z80 Op codes are supported, plus a wide selection of pseudo op codes such as DEFB, DEFW etc. A useful feature is the way in which operands can be typed as BASIC expressions. When the assembler is called (by LET assemble = number) the whole program is scanned and ALL code, irrespective of its position within the program, is compiled. This can be assembled as a direct command or during RUN time. The FORTH used is an implementation of FORTH 79, is 16 bit integer and also has some unusual and useful features such as allowing the USR command to call machine code. Unlike the assembler, the FORTH compiler only compiles the code following the command, most usefully from within a program, and stops when it reaches the next Basic command. The only disadvantage with this language is that you must have a Microsource unit attached, as, unlike the assembler, FORTH does not generate code which can be used independently. Finally, the Debug utility is easy to use and performs all the tasks you are likely to require from such a program, including single stepping breakpoints and memory manipulation. Any of these features could be obtained as individual programs, but apart from the constraints of having to load them and the memory they would occupy, having all three together and available instantly makes the Microsource very powerful. You could, for example, write a program in Basic and then modify sections to FORTH or assembly so that all three types of code exist in the same program yet still be able to run and use it. A tremendous amount of thought has been put into this product, it is compatible with microdrives and Interface 1 and commands and options are included to make the best use of them. I really have nothing but praise for this device, but I did find that sometimes my bad habits caused some confusion, for instance I wrote 'JRNZ label'. The assembler insisted on the form 'JR NZ, label', but thanks to the extensive error trapping, I soon got to know its requirements and this really is a small quibble with a well thought out unit. I have no hesitation in wholeheartedly recommending this unit to anyone who takes their computing seriously. Quadhouse Computers UK, [redacted]. Price: £14.00 BIG BEEPS The Soundboost unit from SSL is a small circuit board with three coloured leads ending in press-on clips attached to it. The circuitry modifies the Spectrum sound generation and outputs it through the TV speaker, tough luck if you've lashed out on a proper monitor! Attaching the gizmo was very easy, but may cause concern as it means you invalidate the guarantee by opening the Spectrum's case. Unscrew case screws, separate case halves, position unit and attach leads as per instructions - which include a good diagram for those among us of a nervous disposition - and Bob's your uncle. Before reconnecting the two halves of the case it is worth entering a BEEP command, turning up the TV volume and then adjusting both the TV tuning and a little fine tuning on the unit to get the best sound you can. Fitting is that simple, and it worked. Unfortunately, the sound is very poor. I tried it on two Spectrums, each with its own different, TV. Tuning is a very precise job but even at the best possible combination of settings the background noise was so high as to be extremely irritating. When the volume was towered so that the background hiss was unobtrusive then the level of sound was only about twice as loud as the Spectrum beeper. Worse was to follow, over the next few days the unit and the TV consistently needed to be re-tuned and I was beginning to experience SAVE/LOAD problems. I'm not saying the unit caused them, but when I eventually gave up and removed it, they disappeared - coincidence? From the company who have produced possibly the finest keyboard for the Spectrum and one of the most exciting graphics aids in the Graphics Pad, this was a great disappointment and, at £9.95 cannot be recommended.
Your Spectrum #9Nov 1984 · p.4
FIRST FORTH ON ROM FOR CURRAH Currah, manufacturers of the MicroSpeech unit, has announced a new product to be available from them... 'soon'. Called the MicroSource, it allows you to write and use assembler or Forth in Basic lines, which means you can run either added languages on their own or even 'integrate' them into Basic programs. Looking uncannily like the MicroSpeech, the MicroSource is another one of those flat black boxes. At the time of writing, Currah weren't giving away enough for us to find out whether there would be an expansion port carried through. This was one of the only big criticisms of the MicroSpeech and is probably the reason for the launch of their MicroSlot motherboard. The MicroSource has a planned release price of £44.50 but more details should be available from Currah by the time you're reading this. If you want the info first hand, give 'em a ring on [redacted].
Full-page ad8
- Your Spectrum #11Feb 1985 · p.7
- Crash #12Jan 1985 · p.195
- Big K #9Dec 1984 · p.129
- Crash #11Dec 1984 · p.163
- Your Spectrum #10Dec 1984 · p.7
- Big K #8Nov 1984 · p.121
- Your Spectrum #9Nov 1984 · p.89
- Popular Computing Weekly #40Oct 1984 · p.22
Advert5
- Sinclair User #36Mar 1985 · p.115
- Your Spectrum #11Feb 1985 · p.89
- Sinclair User #34Jan 1985 · p.93
- Sinclair User #33Dec 1984 · p.93
- Your Spectrum #10Dec 1984 · p.105
News/Note2
- ZX Computing #38Jun 1987 · p.6
- Your Spectrum #9Nov 1984 · p.4
Offer1
- Popular Computing Weekly #17May 1987 · p.24
Feature1
- Your Sinclair #6Jun 1986 · p.40
Related
- Elsewhere
- WorldOfSpectrum
- Same entry at
- Spectrum ComputingZXInfo
Reviews from people here
Sign in to write about this, or make an account. It takes a minute and lets you correct the catalogue too.
Everything ZXDB can hold about this is here.
Sign in to correct or add to this.
Hold the rights to this and want it taken down?