Carnivore2 : First impressions and bugs...

Pagina 13/54
6 | 7 | 8 | 9 | 10 | 11 | 12 | | 14 | 15 | 16 | 17 | 18

Van Wierzbowsky

Guardian (3571)

afbeelding van Wierzbowsky

02-11-2017, 21:18

There was a problem with colors on MSX1, it has been corrected. Thanks to Carmeloco for pointing this out. The corrected boot block has been uploaded into the repository.

Van Wierzbowsky

Guardian (3571)

afbeelding van Wierzbowsky

03-11-2017, 12:58

Can anyone tell me how to disable the bloody cursor? Putting 0 or 1 into 0xFCA9 doesn't have any effect...

Van Wolverine_nl

Paragon (1160)

afbeelding van Wolverine_nl

03-11-2017, 14:51

Alexey wrote:

Can anyone tell me how to disable the bloody cursor? Putting 0 or 1 into 0xFCA9 doesn't have any effect...

You are treating it like a system-variable, not sure it is the way to go.
Here is a thread about it as well.

Van Wierzbowsky

Guardian (3571)

afbeelding van Wierzbowsky

03-11-2017, 18:55

I found some temporary solution for this, will update the boot block soon.

Van Wierzbowsky

Guardian (3571)

afbeelding van Wierzbowsky

04-11-2017, 12:48

The new boot block version 1.75 is now in the repository.

Alexey

Van NYYRIKKI

Enlighted (6033)

afbeelding van NYYRIKKI

04-11-2017, 14:21

Alexey wrote:

Can anyone tell me how to disable the bloody cursor? Putting 0 or 1 into 0xFCA9 doesn't have any effect...

I would say correct way to handle this would be excuting CHSNS (#9C) before CHGET (#9F). If there is character on buffer the cursor will not be drawn... If you really want to get rid of cursor once and for all then you have to do something like POKE &HFDA9,&HE1: POKE &HFDAE,&HE1... Not very great approach though...

Van Wierzbowsky

Guardian (3571)

afbeelding van Wierzbowsky

04-11-2017, 20:39

NYYRIKKI wrote:

I would say correct way to handle this would be excuting CHSNS (#9C) before CHGET (#9F). If there is character on buffer the cursor will not be drawn... If you really want to get rid of cursor once and for all then you have to do something like POKE &HFDA9,&HE1: POKE &HFDAE,&HE1... Not very great approach though...

Kiitos Nyyrikki! I wonder why it's not a great approach? With this change you just skip the bios routines that draw and erase the cursor. You destroy HL in the process, but I don't think it's being used within those routines. And it does get rid of the bloody cursor forever. The 0xFDAA and 0xFDAF are always 0xC9 and are not used anywhere, so there will be no loss of control if these values are untouched.

Van Grauw

Ascended (10706)

afbeelding van Grauw

04-11-2017, 21:11

Because since it pops the return address, it relies on the calling BIOS routine being responsible for showing (and only showing) the cursor, something which may not necessarily be true. It may work with your BIOS, or many others, but it may not work with C-BIOS or any particular customised BIOS (by the vendor or by the user). E.g. consider the CX5MII which hooks into the text display routines for 80 columns support with a small built-in ROM. Also if you touch the hooks and don’t restore, you will affect operation of any software afterwards.

So by using that trick, you are making a lot of assumptions about the BIOS, and about the use of these hooks (at least poke C9H as well). And in the world of MSX with its many implementations, assumptions are generally bad.

What’s wrong with CHSNS? Seems a much more elegant and compatible way to implement it.

Van Wierzbowsky

Guardian (3571)

afbeelding van Wierzbowsky

04-11-2017, 21:31

Hmm, how checking for a character in a buffer would affect the cursor? Besides, as you see in the code the bios call 0x156 is initiated before checking for a key. And I want to keep the KILBUF call before CHGET for better usability.

Van Grauw

Ascended (10706)

afbeelding van Grauw

04-11-2017, 21:46

The cursor is only displayed when there is no character in the buffer.

    call KILBUF
Wait:
    call CHSNS
    jr z,Wait
    call CHGET
    ; a = character
Pagina 13/54
6 | 7 | 8 | 9 | 10 | 11 | 12 | | 14 | 15 | 16 | 17 | 18