MSX (1) System Variables in Work Area

Page 4/7
1 | 2 | 3 | | 5 | 6 | 7

By Grauw

Ascended (9578)

Grauw's picture

14-06-2014, 23:35

Could also give my assembler Glass a try.

By bore

Expert (119)

bore's picture

15-06-2014, 01:55

I've been using vasm for a while now. Supports both db and defb.

By NYYRIKKI

Enlighted (5691)

NYYRIKKI's picture

15-06-2014, 12:26

Last few versions of sjAsm also supports both db and defb

By erwinmusik

Master (140)

erwinmusik's picture

15-06-2014, 13:15

Thanks a lot all of You!
Especially Glass I will test later....

BUT, I´m soooooo stupid!

after hours of plain writing code, I forgot that my new Editor "ASide" has a built in Assembler as well!
Like usual I started my Batch file with tniasm............and was sooo frustrated, that my mind goes down.

Now I can go on to write my code, testing the MBIOS of the SFG05

I´ll Keep You updated

Greetings from Berlin

Winfried

By erwinmusik

Master (140)

erwinmusik's picture

15-06-2014, 21:12

erwinmusik wrote:

Oh Yes!
The value is right, my description was wrong

now corrected:

          AND       63                  ; 00111111  zeroe bit 7 8, leave 1-5 as they are
          OR        64                  ; set the 6th BIT

MSX Bioslisting Part 1 page 26-1 (62)

I found another mistake in my description.

I use the BIT 1-8 counting - in the BIOS listing they use BIT 0-7

the correct description is, using the BIT 0-7 counting:

          AND       63                  ; 00111111  zeroe bit 6,7, leave 0-5 as they are
          OR        64                  ; set the 6th BIT

set bit 6 is to write (or read) the VRAM in the VDP

That way is direct writing to the VRAM

the first Byte to OUT(99h) sends the lower Byte of the adress (NameTable+x)
the second Byte the higher Byte (only Bit 0-5 is used, the VRAM is adressed by 14bits only) and the bits 6,7 are for adressing the Register or the VRAM Access.
Bit 6 tells the the VDP the transferred two Bytes are adressed to VRAM
After that, we can write one data Byte to OUT(98h)

(Set Bit 7 to 1 and 6 to 0 tells the VDP we want to access the statusregister)

The description of the VDP says, the VRAM Adress Register is autoincremented.

Quote:

4.3 WRITING AND READING VRAM
The VDP is connected to VRAM via a 14-bit autoincrementing Address Register. Once the
address to read from or write to is set up (two-byte data transfer), we can read or write a byte
of data using a one-byte transfer. Continuing to read or write to the VDP causes the address to
increment automatically. Therefore, reading or writing a sequential chunk of data can be performed
very quickly. The MODE signal is high (MODE1) for the first two data transfers (address
setup), and low (MODEO) for the third when actually reading from or writing to VRAM.

But it wont work, I have to send HL incremented to OUT(99h) before the next Data to OUT(98h)
Otherwise all characters appears on the same Position and we can see only the last character left.

EDIT: I guess I´m wrong, but I cannot test it now, have lost all my work today, because of my new Editor don´t use the standard ctrl+s command for save! I´m frustrated again Evil hasn´t activate the auto backup

By hit9918

Prophet (2899)

hit9918's picture

15-06-2014, 21:50

Autoincrement only fails when writing too fast on real MSX1.
Try this code, it dumps some letters from (hl).
The loop is nicely in VDP speed limit. Still lots faster than with always 0x99 setup. Apps can be real fast.

	ld b,8		;loop counter
	ld c,0x98	;port in C
loop:	outi
	jp nz,loop

By erwinmusik

Master (140)

erwinmusik's picture

15-06-2014, 22:39

Oh yeah, That Looks like Speed Limit.
I know, i had a mistake in my testcode, but its gone and now it's Football

By TheSpecialist

Expert (113)

TheSpecialist's picture

16-06-2014, 00:20

erwinmusik wrote:

I can´t believe, my entire work for the cat......

You must be kidding Shocked!

erwinmusik wrote:

I use the BIT 1-8 counting - in the BIOS listing they use BIT 0-7

Now I know you are kidding! LOL!

By sd_snatcher

Prophet (3424)

sd_snatcher's picture

16-06-2014, 02:49

Quote:

Does TASm and the other command line Assembler accept DEFB?

SjAsmplus accepts DEFB and DEFW.

By erwinmusik

Master (140)

erwinmusik's picture

16-06-2014, 17:01

Whats wrong with this part?
I´ll use the BIOS Routine to check if the keyboardbuffer is filled....
But never come back to BIOS, that means that the Zflag is never set

mainloop:
          Call CHSNS ;EQU 09Ch 
          Call Z, RTBIOS ; my return routine
          
          JP mainloop

A look at the BIOS listing shows it uses two variables PUTPNT and GETPNT

Page 4/7
1 | 2 | 3 | | 5 | 6 | 7