REVIEWS COURTESY OF ZXSR

Editor Assembler
Picturesque
1982
Sinclair User Issue 16, Jul 1983   page(s) 37,38

THE EASIER ROUTE FROM BASIC TO MACHINE CODE

Writing programs is time-consuming. John Gilbert examines a collection of cassettes which help to make the job much simpler.

The best way to learn about machine code is to use an assembler. Machine code consists of numbers but with an assembler the user can write code in assembler language, which looks more like Basic and is easier to understand. The program will then convert the user's assembly language instructions, called source code, into machine code.

Although the ZX-81 has been around for several years there are only a few machine code assemblers available on the market for it. The only big companies to produce assemblers for the machine are Artic Computing and Bug Byte. Both built their reputations with these assemblers.

The Artic assembler is a two-pass program. It will permit full use of labels, will inspect and modify registers and also allows output to a printer. The code to be assembled is put into a REM statement at the beginning of the program and all code can be written in standard Z-80 mnemonics. The assembler will also assemble messages which are to be used in programs into hexadecimal code. It costs £9.95.

The other best-seller is the Bug-Byte ZXAS. The program is similar to that of Artic but was launched in a blaze of publicity as being the first machine code assembler for the ZX-81.

Bug-Byte also wanted to be the company which produced the first assembler for the Spectrum but it was to be disappointed. Wrangling within the company between its programmers put the release date further and further back until the package became available early this year.

The program is for the 16K and 48K Spectrum. It is very comprehensive in its options and very easy to use. As well as assembling user machine code, it has a full editor facility with which the user can view assembly code, delete and insert, search for specific strings of text within machine code, and list all the labels which have been specified by a user in a program within a cross-referenced table.

The editor will also reverse 16-bit values, such as memory addresses, if the user specifies that option. That facility is useful when dealing with a large number of 16-bit addresses in a long program. The use of 16-bit values can be a problem for beginners, who often do not know whether or not to reverse a number.

The program also has a good cassette interface. Both the source code - the user's - and the object code - assembled-code can be filed on to cassette. That means that source code can be saved and re-edited when the user needs it. The saved source code could also be useful if the programmer wanted to upgrade a program.

Unfortunately the manual, or lack of it, provides points against Aspect. Instructions are written on a piece of paper. They are just about adequate and contain no examples. Aspect costs £9 and is available from shops such as W H Smith.

Picturesque slipped its Editor/Assembler on to the market very quietly. The program is for the 16K and 48K Spectrum and is very powerful. It is complete with a comprehensive user manual which a complete beginner can understand.

The Editor is the part of the program which enters the source code. It is possible to enter code in the same type of format as a Basic program, as each line is given a line number. Unlike the Basic system on the Spectrum, line numbers can be generated by the program automatically with the use of the AUTO command. The use of line numbers means that the source file can be edited quickly and easily.

When the source code has been entered correctly and there are no bugs in the text, the assembler can be called into operation. The usual ORG instruction is included as part of the instruction set to define the address at which the assembled code should be put.

The program display is interesting, as the screen has a 40-column width and is split into several fields which correspond to those used in assembly language programming, together with a line number field. The cursor recognises the end of one field and jumps to the next automatically. That makes the entered source code easy to understand. The Editor/Assembler is ideal for the beginner and could also be a powerful tool in the hands of a professional programmer. It costs £8.50.

The program which has caused a buzz of excitement in the Sinclair User offices is probably one of the most powerful assemblers which we have reviewed. It is all the more remarkable as it is produced by a small and, until now, largely unrecognised software house, Crystal Computing.

The program, Zeus, is a two-pass assembler which allows the use of the full Z-80 mnemonic instruction set. Source code can be line-numbered and an AUTO line-number facility is also available.

The program is accompanied by the best manual we have seen for an assembler. It contains step-by-step instructions for entering and editing source code. An example is included which will, if entered correctly, colour the screen white, the current ink colour.

The use of an example in that way is good, because if you make a mistake and the program does not work you will have to re-learn the instructions. If the example works, users will have a good understanding of how Zeus operates.

Zeus also contains several subroutines which can be used within source code. They include an INKEY$-type function and print a character routine. Other functions in the assembler include automatic re-numbering of the source file, outputting of code to a printer, and the reclaiming of 'old' source files for further work. Zeus has been aptly-named by Crystal Computing. It costs £8.95.

There are very few good assemblers on the market although the big software houses all claim to have the best available. It is, therefore, surprising that a small company like Crystal should produce such an excellent assembler as Zeus. The reason may be that while large companies spend their money on colourful advertising, smaller companies need to rely on very good quality products.

Artic Computing, 396 James Reckitt Ave, Hull, North Humbersade HU8 0JA.

Picturesque, 6 Corkscrew Hill, West Wickham, Kent BR4 9BB.

Crystal Computing, 2 Aston Way, East Herrington, Sunderland SR3 3RX.


REVIEW BY: John Gilbert

Blurb: 'One of the most powerful assemblers which we have reviewed is produced by a small, and largely unrecognised software house, Crystal Computing'.

Gilbert Factor8/10
Transcript by Chris Bourne

Sinclair User Issue Annual 1984   page(s) 30,31

THE EASIER ROUTE FROM BASIC TO MACHINE CODE

Writing programs is time-consuming. John Gilbert examines a collection of cassettes which help to make the job much simpler.

The best way to learn about machine code is to use an assembler. Machine code consists of numbers but with an assembler the user can write code in assembler language, which looks more like Basic and is easier to understand. The program will then convert the user's assembly language instructions, called source code, into machine code.

Although the ZX-81 has been around for several years there are only a few machine code assemblers available on the market for it. The only big companies to produce assemblers for the machine are Artic Computing and Bug-Byte. Both built their reputations with these assemblers.

The Artic assembler is a two-pass program. It will permit full use of labels, will inspect and modify registers and also allows output to a printer. The code to be assembled is put into a REM Statement at the beginning of the program and all code can be written in standard Z-80 mnemonics. The assembler will also assemble messages which are to be used in programs into hexadecimal code. It costs £9.95.

The other best-seller is the BugByte ZXAS. The program is similar to that of Artic but was launched in a blaze of publicity as being the first machine code assembler for the ZX-81.

Bug-Byte also wanted to be the company which produced the first assembler for the Spectrum but it was to be disappointed. Wrangling within the company between its programmers put the release date further and further back until the package became available early in 1983.

The program is for the 16K and 48K Spectrum. It is very comprehensive in its options and very easy to use. As well as assembling user machine code, it has a full editor facility with which the user can view assembly code, delete and insert, search for specific strings of text within machine code, and list all the labels which have been specified by a user in a program within a cross-referenced table.

The editor will also reverse 16-bit values, such as memory addresses, if the user specifies that option. That facility is useful when dealing with a large number of 16-bit addresses in a long program. The use of 16-bit values can be a problem for beginners, who often do not know whether or not to reverse a number.

The program also has a good cassette interface. Both the source code - the user's - and the object code - assembled-code can be filed on to cassette. That means that source code can be saved and re-edited when the user needs it. The saved source code could also be useful if the programmer wanted to upgrade a program.

Unfortunately the manual, or lack of it, provides points against Aspect. Instructions are written on a piece of paper. They are just about adequate and contain no examples. Aspect costs £9 and is available from shops such as W H Smith.

Picturesque slipped its Editor/Assembler on to the market very quietly. The program is for the 16K and 48K Spectrum and is very powerful. It is complete with a comprehensive user manual which a complete beginner can understand.

The Editor is the part of the program which enters the source code. It is possible to enter code in the same type of format as a Basic program, as each line is given a line number. Unlike the Basic system on the Spectrum, line numbers can be generated by the program automatically with the use of the AUTO command. The use of line numbers means that the source file can be edited quickly and easily.

When the source code has been entered correctly and there are no bugs in the text, the assembler can be called into operation. The usual ORG instruction is included as part of the instruction set to define the address at which the assembled code should be put.

The program display is interesting, as the screen has a 40-column width and is split into several fields which correspond to those used in assembly language programming, together with a line number field. The cursor recognises the end of one field and jumps to the next automatically. That makes the entered source code easy to understand.

The Editor/Assembler is ideal for the beginner and could also be a powerful tool in the hands of a professional programmer. It costs £8.50.

The program which caused a buzz of excitement in the Sinclair User offices is probably one of the most powerful assemblers which we have reviewed. It is all the more remarkable as it is produced by a small and, until now, largely unrecognised software house, Crystal Computing.

The program, Zeus, is a two-pass assembler which allows the use of the full Z-80 mnemonic instruction set. Source code can be line-numbered and an AUTO line-number facility is also available. The program is accompanied by the best manual we have seen for an assembler. It contains step-by-step instructions for entering and editing source code. An example is included which will, if entered correctly, colour the screen white, the current ink colour.

The use of an example in that way is good, because if you make a mistake and the program does not work you will have to re-learn the instructions. If the example works, users will have a good understanding of how Zeus operates.

Zeus also contains several subroutines which can be used within source code. They include an INKEY$-type function and print a character routine. Other functions in the assembler include automatic re-numbering of the source file, outputting of code to a printer, and the reclaiming of 'old'source files for further work. Zeus has been aptly-named by Crystal Computing. It costs £8.95.

There are very few good assemblers on the market although the big software houses all claim to have the best available. It is, therefore, surprising that a small company like Crystal should produce such an excellent assembler as Zeus. The reason may be that while large companies spend their money on colourful advertising, smaller companies need to rely on very good-quality products.

Artic Computing, 396 James Reckitt Avenue, Hull, North Humberside HU8 0JA.

Picturesque, 6 Corkscrew Hill, West Wickham, Kent BR4 9BB.

Crystal Computing, 2 Aston Way, East Herrington, Sunderland SR3 3RX.


REVIEW BY: John Gilbert

Blurb: 'One of the most poweful assemblers which we have reviewed is produced by a small, and largely unrecognised software house, Crystal Computing.'

Gilbert Factor8/10
Transcript by Chris Bourne

Sinclair User Issue Annual 1984   page(s) 32,33

MAKING MACHINE CODE EASIER TO UNDERSTAND

After dealing with assembers, John Gilbert turns his attention to their counterparts, the disassemblers.

The term disassembler has been used in many ways by professional producers of software to describe their products and some confusion has arisen as to what a disassembler should or should not do. The strict definition of a disassembler calls for a program which will translate the numeric values of machine code into the mnemonics of assembly language. There are other packages which do all kinds of things with machine code but do not fulfil that definition. The correct term for those packages is toolkit.

The mnemonics of assembly language look like shortened versions of Basic keywords. They are used to represent the machine code numbers which computers can understand but which human programmers still find difficult to cope with in great quantities. It is much easier to understand a mnemonic such as RET, which means Return to Basic, than its machine code counterpart, which in this case is 201.

Most disassembler packages include a monitor program which allows the user to change machine code stored in RAM which has been disassembled. The disassembler makes the editing process easier, as mistakes can be spotted quickly if the programmer has a disassembly and not just a list of numbers which have to be sorted.

When computers had just been invented there was little software and languages such as Basic and Pascal did not exist. Programmers had to use programs which consisted of long lists of numbers. You can imagine the trouble if those programs did not work. Every number in the program would have to be checked to see if it was correct.

The invention of assemblers and disassemblers made things easier. You could enter code in mnemonic form using the assembler and check the code using the disassembler.

When microcomputers were invented the disassemblers used on the large mainframe computers had to be altered to work on the smaller systems, as many of the instructions which were used on mainframes could not be used on micros.

The first disassembler to appear commercially for the ZX-81 was ZXDB, from Bug-Byte. The company has built its reputation with that package along with its ZXAS assembler and the reason was because it was cheap and ran on an expensive computer.

The Bug-Byte disassembler was fairly standard in its performance. It allowed you to specify the address, or position in memory, at which you wanted the disassembly to start. The program would disassemble one line at a time and you had to press NEWLINE for the next instruction in memory to be disassembled.

The ZXDB for the ZX-81 used two fields, or areas, on the screen in which to display information. The first showed the address at which an instruction was located and the second showed the disassembly of the machine code instruction.

Other disassemblers, such as the Crystal Computing Monitor and Disassembler for the Spectrum, use three fields. The extra area on the screen is used to display the numeric machine code on which the disassembler is working. It is a good idea as you can check the mnemonics and machine code against each other to see if the disassembler is working correctly.

If a company produces both a disassembler and an assembler it usually makes both programs compatible. That means that both programs can be put into the computer to work together and dispenses with the need to load one program to enter code and then load the next to check that the code is correct.

Having both programs in RAM at the same time will make programming in machine code quicker and easier but the amount of memory left for machine code programs will be reduced drastically. The advantages outweigh the disadvantages, though, so it is a good idea to buy a disassembler which can be used together with an assembler.

Two problems occur when a disassembler starts to produce question marks because it has not been programmed to recognise a machine code instruction. One disassembler which does not follow the Z-80 instruction set is ZXDB from Bug-Byte. The program uses 8080 code instead of Z-80. Instructions which are common on the Z-80 are named differently on 8080. For instance, LD in Z-80 is called M in 8080 code. Those two names mean different things. The LD instruction means load a register with a value, whereas M means move.

Trying to use a disassembler which does not understand the full Z-80 instruction set is like trying to use BBC Basic on a Spectrum or ZX-81. As BBC Basic is not the same as Sinclair Basic, the machine would not recognise the extra commands of the other language. As a result, when buying a disassembler, make sure that the program understands the complete Z-80 instruction set and not just a subset.

Disassemblers can serve two puroposes. They can be used to view code which you have stored in RAM or they could be used to look at the ROM of the machine.

With a good disassembler you could obtain a listing of the complete Sinclair ROM for either the ZX-81 or Spectrum. If you knew sufficient about machine code you might also be able to tell how the ROM works. To investigate the ROM, or go bug-hunting in it, you need the proper kind of disassembler. Picturesque produces a monitor and disassembler package which suits the purpose. The disassembler has to provide facilities for output to a printer, as the Basic interpreter and operating system within the ROM are very lengthy.

A true analysis would have you jumping to different parts of the ROM when JP, or JumP, instructions are indicated. JumP is similar to the Basic GOTO instruction but there are many options available with that command and the disassembler will help you to spot them.

Your disassembler should be capable of handling the RST instruction as it is used many times in the ROM. It means ReStarT and the instruction provides a quick entry point into the ROM for programmers using ROM routines in their machine code programs.

The RST 10 instruction, for instance, would send the computer control to the part of the ROM which deals with the printing process. The routine sets up the machine to display one character on the screen.

Most disassembler packages on the market for both Sinclair machines are being sold mainly as an afterthought to assembler packages. The disassembler has a very important role in computing and the second-class sticker with which it has been labelled is unfair.

A disassembler should be a necessity when you are writing machine code programs.

If you are to buy one, take as much time about choosing it as you would when buying an assembler. In many cases it will be the disassembler which will disappoint you with its performance and not the assembler.

For instance, the Bug-Byte ZXDB was a breakthrough when it was launched but with hindsight it is somewhat mediocre. The standard of the documentation with ZXDB was far from satisfactory; as a result, the program was difficult to use.

Disassemblers are becoming more complex all the time and there is not much which can be done to improve them. Many of the programs on the market, however, could be streamlined to fit into less RAM than is now the case.

dK'tronics, Unit 2, Shire Hill Industrial Estate, Saffron Walden, Essex, CB11 3AQ.

Crystal Computing, 2 Ashton Way, East Harrington, Sunderland, SR3 3RX.

Picturesque, 6 Corkscrew Hill, West Wickham, Kent, BR4 9BB.


REVIEW BY: John Gilbert

Blurb: 'The strict definition of a disassembler calls for a program which will translate the numeric values of machine code into the mnemonics of assembly languag.'

Blurb: 'Many programs on the market could be streamlined.'

Gilbert Factor8/10
Transcript by Chris Bourne

All information in this page is provided by ZXSR instead of ZXDB