Friday, 09-Jun-2023 09:02:24 BST
Z88 Programmers Section
Intuition - a code testing environment with built-in debugger
Forming an idea of a program, developing it through the symbolic code of assembler is about two processes. The challenge at hand is to make it run reliably and efficient. This is almost an impossible task with a low level language as assembler - especially the Z80 with it's limited registers and operands. Still, it has become a popular programming issue for thousands of users on the ZX Spectrum. Remember some of the Ultimate Games?
The Z88 is born with a sophisticated operating system. With all it's system traps to manipulate it's device-, memory- and file resources it's a vital component of the development stage that you have a debugger at hand that can execute your code and allow you to investigate the execution step by step. monitor correct set-up of your system calls and watch how the application is executed side by side with a window that displays the Z80 instruction while they are executed. Intuition is just that. Intuition has all the necessary features for the novice and professional developer:
You may use the Intuition application (#ZI) as a test ground which provides 40K of contiguous memory - the same principle behind the BBC BASIC application. This is of course pure luxury. Real Z88 application are memory efficient programs that exploit the fragmented memory scheme as in PipeDream or Diary. We made this debugger version only to supply the programmer with a quick feature to test modular routines. However, you could use the Intuition application as an environment for machine code utility programs, e.g. loading different small programs at various memory areas and providing a menu which could activate each routine. This would be a way to avoid the Application Card production and insertion of the card to be able to run the code.
The real power of Intuition is to be able to monitor the external applications on EPROM Cards and seamlessly interface with the Z88 operating system. Traditional debuggers require RAM to monitor programs, but we implemented a virtual Z80 processor that is the core of the debugger - this avoids the traditional memory address patching technique for redirecting the flow of instructions back to the debugger (e.g. on a breakpoint). Patching is impossible on EPROM, as you may well know.
When Intuition has encountered a breakpoint during execution of the monitored application, it enters command mode and uses the GN_SIP operating system call (standard line input). Intuition only monitors applications, not the operating system. This is necessary due to the interrupt system and for security reasons - imagine killing a monitored application while the operating system is being traced!
The virtual Z80 processor just executes opcodes (bytes) directly from memory whether it is RAM or EPROM. The average speed loss in execution of your monitored application is about 11 times slower than the original processor. The core of the debugger, the Z80 instruction parser, is packed in 8K. All remaining features are resided in the next 8K - a comprehensive debugger only in 16K of memory.
Intuition - stand-alone executable debuggers for inclusion in external EPROM Cards
As mentioned before, The Intuition Application is merely for testing purposes of routines with the need for EPROM blowing. The real core of Intuition is to include it with an external Application on EPROM. On insertion of the Card into the Z88 and activation of the application (pressing it's hot key) you just call the debugger once from your external application and Intuition takes over. From then on you may monitor your application and still be able to switch out to other applications when Intuition enters it's command mode. Intuition may then be preempted (activating other applications) but the Z88 only sees the external application present on the Card.
The Z88 memory organisation inhibits the segmentation principles found on Intel 80x86 processors. The Z88 can address 4MB of memory which is divided into 16K banks that can be made to point into the Z80 address space. The Z80 address is 64K which are divided into 4 logical segments. Each segment may hold one of the 256 possible memory banks in the Z88. The application programmer has control of which banks that are bound into the Z80 address space during run time of the application.
We have made Intuition to fit into a 16K bank to allow the developer to choose which segment he wants to insert Intution. Three different versions are available, which are resided as binary files on the supplied 3.5" discs:
For software questions, ask the Z88 Development Team
© Rakewell Limited 1998-2004 InterLogic 1999