Extending WozMon
Posted: 13 Mar 2019, 21:48
Last June, Marcel ported the classic 1976 Apple 1 monitor program "WozMon" to Gigatron - and with this new tool in place, Tiny BASIC followed on very shorty afterwards. Just this week, WozMon has allowed the
debugging of the expansion pcb - without the need for any external resources - untethered to a PC.
Back in 1976, RAM was a limited resource - and so WozMon was tailored to just under 256 bytes - so that it would fit in the RAM available - and leave space for the User's program. Gigatron does not suffer such acute RAM limitations, and so Marcel has allowed the ported version of WozMon to grow to about 600 bytes - in order to allow for printing character routines and other improvements to the original.
I tinkered with WozMon this evening - following a couple of the given examples, and it occurred to me that WozMon provides a simple interactive environment that allows code snippets to be tested - without the clutter or distraction of other processes running in the background.
WozMon has a few useful routines that can be exploited by the User, mostly those involved with printing characters and displaying the RAM contents as hexadecimal digits on the screen. WozMon also allows small assembly language programs to be run and tested in isolation - using the R (Run) command.
What if we were to extend WozMon, with a whole suite of new commands, with the aim of adding many new features and making it a lot more interactive? Most of the hard work is already done, new commands could be added in the form of a simple jump table that allows access to further blocks of code. By stringing these command together, you can mechanise the process of executing a series of assembler routines.
Tiny BASIC gives access to the RAM through its PEEK POKE and USR keywords. However, Tiny BASIC carries a lot of baggage, as it needs to interpret every line of code - again and again in every loop. What I am proposing is a means of chaining together vasm routines, using a command interpreter that lies somewhere between WozMon and Tiny BASIC - in terms of codespace and complexity.
My dreams are inspired by those of Chuck Moore - who in early 1968 sat down alone with an IBM 1130 and created his own interactive programming environment. It included a self hosted assembler and disk routines. With the recent developments with the expansion pcb - it looks like Gigatron will acquire some mass storage and the means to save to and load from a non-volatile memory. This could be a uSD card or even a FRAM (ferroelectric RAM) accessed via the SPI bus. It looks like Gigatron could just leapfrog the whole magnetic storage phase of development.
Provided that I can disassemble WozMon sufficiently to understand its flow and operation, I think I can write some useful extensions.
debugging of the expansion pcb - without the need for any external resources - untethered to a PC.
Back in 1976, RAM was a limited resource - and so WozMon was tailored to just under 256 bytes - so that it would fit in the RAM available - and leave space for the User's program. Gigatron does not suffer such acute RAM limitations, and so Marcel has allowed the ported version of WozMon to grow to about 600 bytes - in order to allow for printing character routines and other improvements to the original.
I tinkered with WozMon this evening - following a couple of the given examples, and it occurred to me that WozMon provides a simple interactive environment that allows code snippets to be tested - without the clutter or distraction of other processes running in the background.
WozMon has a few useful routines that can be exploited by the User, mostly those involved with printing characters and displaying the RAM contents as hexadecimal digits on the screen. WozMon also allows small assembly language programs to be run and tested in isolation - using the R (Run) command.
What if we were to extend WozMon, with a whole suite of new commands, with the aim of adding many new features and making it a lot more interactive? Most of the hard work is already done, new commands could be added in the form of a simple jump table that allows access to further blocks of code. By stringing these command together, you can mechanise the process of executing a series of assembler routines.
Tiny BASIC gives access to the RAM through its PEEK POKE and USR keywords. However, Tiny BASIC carries a lot of baggage, as it needs to interpret every line of code - again and again in every loop. What I am proposing is a means of chaining together vasm routines, using a command interpreter that lies somewhere between WozMon and Tiny BASIC - in terms of codespace and complexity.
My dreams are inspired by those of Chuck Moore - who in early 1968 sat down alone with an IBM 1130 and created his own interactive programming environment. It included a self hosted assembler and disk routines. With the recent developments with the expansion pcb - it looks like Gigatron will acquire some mass storage and the means to save to and load from a non-volatile memory. This could be a uSD card or even a FRAM (ferroelectric RAM) accessed via the SPI bus. It looks like Gigatron could just leapfrog the whole magnetic storage phase of development.
Provided that I can disassemble WozMon sufficiently to understand its flow and operation, I think I can write some useful extensions.