Juan Castro's HDB-DOS stuff.
Allen Huffman via Coco <coco-uNHYcr1XS/wmlAP/[email protected]>
| Newsgroups | gmane.comp.hardware.tandy.coco |
|---|---|
| Message-ID | <[email protected]> |
Comments and Question for Juan: > On Aug 1, 2025, at 7:00 PM, Juan Castro <[email protected]> wrote: > > - All CoCo 3 tokens are recognized, so a CoCo 3 BASIC program will not be > garbled upon loading I assume they give an ?SN ERROR, but you can at least see them de-tokenized? > - 51x24 and 64x24 text modes in PMODE 4, switchable with WIDTH command > - Requires at least 4 graphics pages (6K) PCLEARed; forces PMODE 4 > - PRINT@ works as expected, with the maximum position being 1223 in 51x24 > mode and 1535 in 64x24 mode Did that take big changes? I guess 0-511 was already past a byte, so using a 16-bit value already? Just changing the max based on screen mode? > - The charset defined in ROM is ISO-8859-15, although it's possible to > redefine it with HSET MEM COPY and HPOINT(5) (see below) Ah, https://en.wikipedia.org/wiki/ISO/IEC_8859-15 So extra characters the CoCo 1/2 VDG does not have. Did the CoCo 3 native font have most of these? I guess I have no idea what they based the CC3 characters on. > - TIMERL function similar to TIMER but wraps at 2^32 (2 years, 98.5 days) Nice! > - TIMER FOR N waits N seconds (N may be a fraction: TIMER FOR 1.5 waits 1.5s) Very nice. I’m not sure how a timeout would be done normally. I guess estimating using TIMER/60 for seconds in a loop? > - HSET MEM COPY moves BASIC to RAM in 64KB machines; HSET MEM and HRESET MEM > switch to RAM and ROM respectively Cool - no “ROMRAM.BAS” to run first or whatever. Does the switch do the same as the POKE that would bank ROM in and out? > - HSET COLOR 1 sets text screen to orange; HSET COLOR 0 sets it back to green. And it sticks??? How easy was that fix? > - HPOINT(3) returns the address of a useful data area for manipulating the > new graphics-text mode (cursor blink, shape etc); see new file > cocoroms/rom16kvars.asm POKEs to addresses there to change behavior? > - HPOINT(4) returns the frequency of timer interrupts - 50 for PAL, 60 for > NTSC - this is the value you need to divide TIMER/TIMERL by to get seconds How on earth can you tell that??? Games always had to ask. > - HPOINT(5) returns the address of the graphics-mode text font - 896 bytes > for the 51-column version, followed by another 896 bytes for the "thin" > (64-column) version How is the encoding for the 51 column version? I assume for 64, it is 4 bits per letter, so if a font was 8 rows high, it would be 4 bytes to do that? > - BASIC printer output redirected to DriveWire virtual printer (experimental), > now with a flag in the aforementioned data area to disable redirection, > still with no BASIC interface to control it Normal PRINT#-2 supported as well? > - Accepts binary constants with &B, just like &H and &O > - Also, these notations can yield values up to 2^32-1 > - Ancient bug in &O (accepted 8 as a digit) fixed Nice! &B would have been so much nicer to have. All those old POKE and PEEK hardware things were goggly-gook, but if you could see the bits, they would make more sense… POKE &HFF20, PEEK(&HFF20 AND &B01000000) > - Conversely, HEX$ now accepts values up to 2^32-1 > - ONERR, ERNO, and ERLIN work as expected > - Differently from the CoCo 3, ERNO and ERLIN can be examined in direct mode > after the BASIC program ends. …still with the crashes? > - LPEEK and LPOKE work like PEEK and POKE but arguments are 16-bit unsigned > integers, i.e., they affect addresses A and A+1. Example: LPEEK(&H68) > returns the line number of the running BASIC program -- previously you needed > to use 256*PEEK(&H68)+PEEK(&H69). Think of the typing that would have saved us. ?LPEEK(25) > - Additionally, both have now a block copy syntax: LPEEK$(A,N) returns a > string with N characters with a copy of memory at address A. Likewise, > LPOKE A,X$ pokes all characters of X$ consecutively starting at address A. Explain the use here. Encoding assembly in a string, then POKEing it into memory with one blast? > - GOTO X may be used as an expression; it simply returns X. Useful for > self-documenting programs that can be renumbered. Example: > - 10 PRINT"TO CHANGE THE FUNCTION, EDIT LINE";GOTO 500 How does the parser know? > - Allows PCLEAR 0 for more RAM - instigated by an article by Allen Huffman: > https://subethasoftware.com/2015/01/16/pclear-0-to-get-more-coco-basic-memory > Requires PMODE 0. You should not, under any circumstances, do anything with > graphics while in this mode or your BASIC program will be mercilessly > clobbered. Woot! This looks fun. I really need to install it into my XROAR. -- Allen Huffman - PO Box 7634 - Urbandale IA 50323 - 515-999-0227 (vmail/TXT only) http://www.subethasoftware.com - https://www.facebook.com/subethasoftware -- Coco mailing list [email protected] https://pairlist5.pair.net/mailman/listinfo/coco