Re: First thought on an interface (to use Paleolithic DROM)
Posted: Wed Jun 18, 2025 8:42 pm
BTW, regarding that mini-monitor, ... I've started looking at that, with a set of lightweight navigation actions, dispatched out of a jump vector, with one level of indirection ... if a vector in the ZP is set to zero, the original jump vector within the mini-monitor is the target for a "JMP (actions,X)", and if it is non-zero, the vector in zero page is used as the target (that is, the JMP (a,X) opcode is stuffed into the location preceding the vector and then is jumped to), so without having to patch the mini-monitor ... and without the mini-monitor having any explicit RAM vector location or process of setting it up ... the jump vector can be copied to any arbitrary location and replacement commands installed in place of the original.
Then having a proper "BRK" routine which stores registers and break return location in a known location in zero page, a command to swap between examining the area the break occurred and the register storage location and a command to perform a BRK return starts to make it more of a practical, if still extremely rudimentary, BRK point monitor.
Deferring the current key handler vector when a BRK occurs and having a built-in command to restore the key handler vector ensures that applications are free to use the command key framework to focus on the actual activity that the application is engaged in, without having to worry about interfering with the working of the mini-monitor.
Actually, that'd be pretty much it ... a set of 12 reasonably orthogonal navigation commands for next, home and previous 16byte row, page, 4K base address, and application program (high water mark for CR entry, $0200 "addr0", and $0000) in the 4-F keys in a 3 high by four across layout, and then F. 0-3 consisting of (in some order) a location toggling command that goes go to the BRK location if in the zero page, and goes to the register storage location if not in the zero page, a return from break command including restoring the pre-BRK keyboard handler, a jump to the currently displayed address and a jump subroutine to the currently displayed address.
It might fit inside the $FFxx page, including hex segment table, and if it does, I'd reckon it on target for a second stage rudimentary BRK mini-monitor before the stage of a full fledged background interrupt LED display driver and keyboard reader up and and key running in support of anything more full-fledged.
Also, after some tinkering, it turns out that editing and displaying a "data" byte stored in the zero page, and then deferring the storage of the data byte until CR is executed become the more parsimonious approach, once there are actions such as pasting the value displayed in the data byte into the high and low byte of the address.
Then having a proper "BRK" routine which stores registers and break return location in a known location in zero page, a command to swap between examining the area the break occurred and the register storage location and a command to perform a BRK return starts to make it more of a practical, if still extremely rudimentary, BRK point monitor.
Deferring the current key handler vector when a BRK occurs and having a built-in command to restore the key handler vector ensures that applications are free to use the command key framework to focus on the actual activity that the application is engaged in, without having to worry about interfering with the working of the mini-monitor.
Actually, that'd be pretty much it ... a set of 12 reasonably orthogonal navigation commands for next, home and previous 16byte row, page, 4K base address, and application program (high water mark for CR entry, $0200 "addr0", and $0000) in the 4-F keys in a 3 high by four across layout, and then F. 0-3 consisting of (in some order) a location toggling command that goes go to the BRK location if in the zero page, and goes to the register storage location if not in the zero page, a return from break command including restoring the pre-BRK keyboard handler, a jump to the currently displayed address and a jump subroutine to the currently displayed address.
It might fit inside the $FFxx page, including hex segment table, and if it does, I'd reckon it on target for a second stage rudimentary BRK mini-monitor before the stage of a full fledged background interrupt LED display driver and keyboard reader up and and key running in support of anything more full-fledged.
Also, after some tinkering, it turns out that editing and displaying a "data" byte stored in the zero page, and then deferring the storage of the data byte until CR is executed become the more parsimonious approach, once there are actions such as pasting the value displayed in the data byte into the high and low byte of the address.