Holon 86 Monitors
Holon 86 works with three different target platforms.
The simplest solution is to create the target application as a coroutine to the development system. You can switch to the application and test it, and then switch back to the host and change the program. The interface between host and target is a monitor, which is included in the host. The monitor is a coroutine, which lets you load, read and execute code in the target space.Activating the coroutine mode:
The coroutine mode is fast, code is loaded with the speed of the host. But there are also problems:
Develop the program on a separate PC. Then you can work on a running program that is always visible. It has the full DOS memory space available, and if the program crashes you only need to restart the monitor; the development system is not affected. The program is created on top of the monitor RMON86.EXE, which communicates via the serial port COM1.
This arrangement is perfectly suited for the development of programs in an embedded PC. Load RMON86 in a flash disk and let it autostart under DOS. Embed the PC in its environment, and now you can develop and control the project interactively from the workstation, obtaining real results and experience with the target environment from the beginning.
This is the right choice, if you don't have a second PC available, or don't want to fill the desk space with computers. Holon 86 is also used to create normal DOS programs, which do not control machinery and do not need a dedicated PC, only a separate DOS platform, if we want to avoid the problems of the coroutine mode.
You can now cross-develop interactively from the host in one DOS session to the application in another DOS window, and see the results immediately. I am working on Holon itself in this way. The Holon DOS sessions communicate via a shared file. The communication via a shared file is fast enough for incremental development, but I wouldn't reload the complete program into the DOS session. On the other hand, downloading a complete code image is fast. This suggests to
The host downloads the existing code image to the target as soon as it establishes contact with the target. This happens after starting Holon 86, and after changing the target mode. If you change the target mode again in the same development session (e.g. for reloading the whole program in coroutine mode), use the command Ctrl+Sft+F7=Download to send the code image to the target.
The monitor creates a main task for the application. Whenever a word is executed in the target, the monitor sets up the main task for this word (among other things it copies the data stack to the task area) and performs a task switch. The word is executed and returns control to the monitor task.
If the word is the main word of the program and runs continually, the host looses control. If, however, the program calls the task switch periodically (the Holon word Switch), both monitor and program cooperate as coroutines. Now you can work on the running program and inspect its memory space in real time.
We have two tasks in this case: monitor and main program. This works fine until you execute another word. Then the new word takes over and the program is finished. However, sometimes we want to test a single word inside the program without finishing the program itself. This is also possible. Let the program run as a task of its own. Then the main task is free for interactive testing of single words. We have three tasks now: the monitor, the main task (normally idle), and the program task.
See the example applications in the Holon 86 test system.