Re: Color BASIC and "CURLIN" (direct versus in a program)
William Astle via Coco <coco-uNHYcr1XS/wmlAP/[email protected]>
| Newsgroups | gmane.comp.hardware.tandy.coco |
|---|---|
| Message-ID | <[email protected]> |
On 2025-10-24 12:20, Allen Huffman wrote: > I have a check at my PUTCHR routine to only work if DEVNUM is 0. Would > that suffice in blocking this from happening to an ASCII save? On an ASCII save, it should. It should also handle LLIST. > Which vector are you referring to for LINE INPUT? RVEC12 would be right. You can clobber X in this case. You would check 4,s to see if it's $AC7F. If it is, you just set CURLIN to $FFFF. This works around the unfortunate ordering of the instructions in the immediate mode loop. I think there's actually a reason for it but I can't remember now what it is. This little hack would solve the problem for the first line after the program exits. This works because INPUT and LINE INPUT which both call the same $A390 routine, but from different places (and they cannot be run from immediate mode). > My attempt to check for CURLIN FFFF will work but not for the FIRST line > after the program stops, which is annoying but maybe good enough. For PUTCHR, *all* registers need to be preserved (except CC). Your test for immediate mode should be reasonable. > I don’t know what registers are safe to use. And this would be done for > EVERY byte output to the console, but I guess there is not much I can do > about that unless I can set my own global flag of “direct mode” versus > “program is running mode” and just check that one flag. Maybe that’s a > better way. The check won't slow things down much and a global flag won't be all that much faster. > Basically, I only want to filter if it is being done by a PRINT command. > Not sure if there is a way to hijack PRINT. You can theoretically intercept PRINT but it's truly miserable to do if you need to do anything on actual character output. But you might be able to intercept PRINT, set a flag, and then intercept the command interpretation loop to reset the flag before command dispatch. That's a bit weird to accomplish, but it's doable. You can check how Extended Basic intercepts CLOADM or how Disk Basic intercepts PMODE to figure out how you might set a flag based on whether PRINT is running. -- Coco mailing list [email protected] https://pairlist5.pair.net/mailman/listinfo/coco