# [Coco] Question on MINTED internals

Neal Crook foofoobedoo at gmail.com
Thu Dec 31 13:04:23 EST 2015

```This piece of the startup code provides the answer to my question:

lda        #1
ldb        #SS.ScSiz
os9        I\$GetStt    ; get screen dimensions
lbcs    _abort
stx        width,u
sty        height,u
lda        width+1,u
ldb        height+1,u
mul
std        scrsize,u    ; compute screen size
leax    buffer,u
stx        scrbuf,u
leax    d,x
stx        membuf,u    ; compute memory buffer
dec        height+1,u    ; *****

For (eg) a 32-char, 16-line terminal, the values 32, 16 are used to compute
the screen and memory buffer sizes and then (line marked ****) the value of
height is decremented from 16 to 15. Now the original code makes sense to

1: _rename     pshs    a,b,x,y
2: @repeat     clra
3:             ldb     <height+1
4:             decb
5:             lbsr    _gotoxy     ; x=0,y=14 - penultimate line
6:             lbsr    _clrlin
7:             ldb     <height+1
8:             lbsr    _gotoxy     ; x=0,y=15 - last line
9:             lbsr    _clrlin

Neal.

On 24 December 2015 at 19:57, Cocodemus <retrocanada76 at gmail.com> wrote:

> Check the gotoxy function.
>
> Sent from my iPhone
>
> > On Dec 24, 2015, at 2:42 AM, Neal Crook <foofoobedoo at gmail.com> wrote:
> >
> > thanks to Robert, Dave and Coco Demus for their comments and explanations
> >
> >>> If you think your way is better, then go for it.
> > no, I was simply trying to understand the (your) intent; your explanation
> > makes perfect sense.
> >
> > My remaining confusion is this.. looking in term_vdg.asm I see szx=32,
> > szy=16 which will result in width being 32 and height being 16. If rows
> and
> > columns are numbered from 0, the valid rows are 0..15. The way I read
> this
> > code, it clear lines with row=15 (bottom row) and row=16 (no such row).
> > What am I missing here?
> >
> > thanks,
> >
> > Neal.
> >
> >
> >> On 24 December 2015 at 07:21, CoCo Demus <retrocanada76 at gmail.com>
> wrote:
> >>
> >> Hi,
> >>
> >> Why ? Well, this code clears line 24 and 25 and displays at line 25 the
> >> message: Rename/Save as: so If I did like you said I would still need to
> >> incb after the last _clrlin because I want a clear line separating the
> text
> >> and the message. This is more a code style, I wasn't trying to do a
> extreme
> >> optimization in the code. If you think your way is better, than go for
> it.
> >>
> >> cheers
> >>
> >>> On Wed, Dec 23, 2015 at 3:32 PM, Neal Crook <foofoobedoo at gmail.com>
> wrote:
> >>>
> >>> Here's my contribution towards raising the technical tone of the
> >>> conversation...
> >>>
> >>> I am working on a port of Luis Antoniosi's MINTED editor to produce a
> >>> version that uses ANSI control sequences. The idea is that it would
> work
> >>> across an rs232 link from a terminal emulator to a real Coco or (and
> more
> >>> importantly for me) work on a virtual terminal on my NitrOS9 multicomp
> >>> system.
> >>>
> >>> Here's a fragment of the original source code (I added the line numbers
> >> for
> >>> reference):
> >>>
> >>> 1: _rename     pshs    a,b,x,y
> >>> 2: @repeat     clra
> >>> 3:             ldb     <height+1
> >>> 4:             decb
> >>> 5:             lbsr    _gotoxy
> >>> 6:             lbsr    _clrlin
> >>> 7:             ldb     <height+1
> >>> 8:             lbsr    _gotoxy
> >>> 9:             lbsr    _clrlin
> >>>
> >>> Assume that the output device is 80 col by 25 row and the height is
> >> stored
> >>> as a 16-bit value, so
> >>> that line 3 loads "25" into B.
> >>>
> >>> The call in line 5 has A=0, B=24
> >>> The call in line 8 has A=0 (assuming A is preserved), B=25
> >>>
> >>> Questions:
> >>>
> >>> 1/ why not do this:
> >>>
> >>> 1: _rename     pshs    a,b,x,y
> >>> 2: @repeat     clra
> >>> 3:             ldb     <height+1
> >>> 4:
> >>> 5:             lbsr    _gotoxy
> >>> 6:             lbsr    _clrlin
> >>> 7:             decb
> >>> 8:             lbsr    _gotoxy
> >>> 9:             lbsr    _clrlin
> >>>
> >>> 2/ is the corner of the screen 0,0 or 1,1 (or something else? I'm
> puzzled
> >>> by the A=0, B=25 which seems contradictory)
> >>>
> >>> 3/ is the corner (0,0 or whatever) the top-left corner or some other
> >>> corner?
> >>>
> >>> (For reference, an ANSI screen has the top-left corner as 1,1)
> >>>
> >>> Thanks in advance for any enlightenment
> >>>
> >>> Neal.
> >>>
> >>> --
> >>> Coco mailing list
> >>> Coco at maltedmedia.com
> >>> https://pairlist5.pair.net/mailman/listinfo/coco
> >>
> >> --
> >> Coco mailing list
> >> Coco at maltedmedia.com
> >> https://pairlist5.pair.net/mailman/listinfo/coco
> >
> > --
> > Coco mailing list
> > Coco at maltedmedia.com
> > https://pairlist5.pair.net/mailman/listinfo/coco
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> https://pairlist5.pair.net/mailman/listinfo/coco
>
```