Page 13 of 22

Re: ZXblast - ZX81 memory extension plus USB

Posted: Mon Mar 06, 2017 10:31 pm
by GCHarder
My ignorance of the ZX81's architecture is showing, I'm not a hardware guy.

Would a character table located at a lower address work, say $C000. I was thinking it would be interesting if there was a "GAME" ROM. Kind of a mash-up of a ZX81 & ZX80 ROM. Use the video driver from the 81 and integer math from the 80. Most games don't need floating point and even purely BASIC games ought to run faster. Anyway, there might be two character tables, one at $E000 for standard characters and one at $C000 with game elements, monsters, aliens, space invaders etc.

Just a thought.

Regards;

Greg

Re: ZXblast - ZX81 memory extension plus USB

Posted: Mon Mar 06, 2017 11:30 pm
by 1024MAK
Unless you recreate the ULA's video functions in the expansion, all character pixel data used by the normal BASIC ROM has to come from a chip attached to the internal "ROM" data bus. This is because the ULA "steals" the data from the ROM chip and then feeds the Z80 CPU a NOP instruction.

For more, see the dk'tronics (and also known by various other names) graphic ROM boards in these threads: link and a recent debate about "UDG" here ;) This post is the most useful in explaining why :D

Mark

Re: ZXblast - ZX81 memory extension plus USB

Posted: Tue Mar 07, 2017 10:57 am
by wilco2009
I am now enjoying the card, it is really great, and reading the user manual.

ZXBlast uses a 512KB flash EPROM to store the zx81 ROM, but It seems only uses a small part, just for ZX81 ROM and USB driver.

is it possible (or will be) to load more than one zx81 ROM in the unused flash memory space?

Re: ZXblast - ZX81 memory extension plus USB

Posted: Tue Mar 07, 2017 11:17 am
by mrtinb
I think it's written in the manual and in this thread.

FILENAME:$ADDR:1 - Load filename @address in instance 1
FILENAME:$0000:1* - Load ROM-file @$0000 in instance 1 write to flash-ROM

Re: ZXblast - ZX81 memory extension plus USB

Posted: Tue Mar 07, 2017 11:33 am
by wilco2009
mrtinb wrote: Tue Mar 07, 2017 11:17 am I think it's written in the manual and in this thread.

FILENAME:$ADDR:1 - Load filename @address in instance 1
FILENAME:$0000:1* - Load ROM-file @$0000 in instance 1 write to flash-ROM
Ok, thanks. I think I understand now.

ZXblast has 7 copies of the zx81 ROM each one stored in a instance. A specific ROM instance corresponds with a specific RAM instance.

That is, ROM instance 1 is running allways with RAM instance 1, ROM 2 with RAM 2 and so on.

Isn't it?

EDIT: Where can I find alternative zx81 ROMs to test them?

Re: ZXblast - ZX81 memory extension plus USB

Posted: Tue Mar 07, 2017 5:40 pm
by blittled
Here is a good collection of ZX81 ROMS https://k1.spdns.de/Vintage/Sinclair/80 ... ZX81/ROMs/

Re: ZXblast - ZX81 memory extension plus USB

Posted: Tue Mar 07, 2017 7:34 pm
by GCHarder
I'm having a problem setting the date and time! If I change date to say 06.07.2017 and the current time it doesn't work. The value I input will flash briefly on the screen then change to 1F.00.2089 and a different time. Is this an error message?

What am I doing wrong.

Regards;

Greg

Re: ZXblast - ZX81 memory extension plus USB

Posted: Tue Mar 07, 2017 8:15 pm
by PokeMon
There is a small bug till release 0.9 which does not implement the input check correctly. The date for example is limited to 31 (maximum days in a month) but forgot that this is a bcd value rather numeric value. So maximum must be $31 and not 31 ($1F). The same error is for the month (12 instead of $12). By the way - the date has to be entered in european stye (date first, then month) and not american style (month first).

It should be possible to enter a date of 06.07.2017 as this applies to the rules. Can you enter 01.03.2017 10:00:00 ?
Why do you want to enter 06.07. ?

Re: ZXblast - ZX81 memory extension plus USB

Posted: Tue Mar 07, 2017 8:23 pm
by GCHarder
That was a typo I tried both 03.07 and 07.03. I'll try your sample when I get home.

Thanks;

Greg

Re: ZXblast - ZX81 memory extension plus USB

Posted: Tue Mar 07, 2017 11:52 pm
by blittled
Pokemon,

I am very interested in the bank switching capabilities of the ZXblast and have a couple of questions on the chart you posted:
$00=RAM instance register (switch instance RAM)
Bit 7 ($80) = switch off NMI control / ZXblast control
$70=ZXblast
$60=instance 1
$50=instance 2
$40=instance 3
$30=instance 4
$20=instance 5
$10=instance 6
$00=instance 7

$10=control register
bit 4=RAM active in area $2000-$3FFF
bit 5=A15 mirror on (restricted to 16k ROM/16k RAM)
bit 6=activate paging
bit 7=page size 16k (default 8k)

$20=ram layout register - activate RAM in main memory area (0=ROM, 1=RAM)
bit 4=$0000-$3FFF
bit 5=$4000-$7FFF
bit 6=$8000-$BFFF
bit 7=$C000-$FFFF

$30=page select register - for page 0-15
$00-$F0, 16 pages (8 or 16k depending on bit 7 of control register)

$40=page window address
$00=$0000
$10=$2000
$20=$4000
$30=$6000
$40=$8000
$50=$A000
$60=$C000
$70=$E000
bit 7=high bit of page select register to use page 16-31

$50=external memory register (switch off address are completely for compatibility)
bit 4=$2000-$3FFF
bit 5=$8000-$BFFF
bit 6=$C000-$FFFF
First off a little terminology to clarify things. When I mention CPU memory I mean the addresses $0000 to $FFFF accessible from the Z80 chip. ZXBlast memory is the addresses $00000-$7FFFF (ram or flash) in the ZXBlast.

Registers $00, $10 and $20 are easy to understand and I have no questions

Register $30 Page select
1. Does this select a block of ZXBlast memory? For example setting it $20 and having Reg $10 set for 16K you would access ZXblast memory $08000-$0BFFF.

2. So for 512K is the memory map for 16K
$00000 - $03FFF Page 0
$04000 - $07FFF Page 1
$08000 - $0BFFF Page 2
,,,,
$7C000 - $7FFFF Page 31 ?

3. For 8K Pages is the map
$00000 - $01FFF Page 0
$02000 - $03FFF Page 1
...

Or
$00000 - $01FFF Page 0
$02000 - $3FFFF Not accessible
$04000 - $05FFF Page 1
...

Or
$00000 - $01FFF Page 0
$02000 - $3FFFF Copy of Page 0
$04000 - $05FFF Page 1?
...

Register $40 Window
4. Does this register tell where the page selected in $30 be placed in CPU memory?
For example
$30 = $10 and $40 = $20 8K Page means that ZXBlast memory page 1 shows up in in CPU memory $4000 - $5FFF
$30 = $10 and $40 = $20 16K Page means that ZXBlast memory page 1 shows up in in CPU memory $4000 - $7FFF

5. Since $30 can only select 16 pages then $40 bit seven selects pages 16-31? Using the above example
$30 = $10 and $40 = $A0 8K Page means that ZXBlast memory page 17 shows up in in CPU memory $4000 - $5FFF
$30 = $10 and $40 = $A0 16K Page means that ZXBlast memory page 17 shows up in in CPU memory $4000 - $7FFF

Register $50 external memory
6. Is this a switch to activate that 8K Ram of cpu memory?
0 means off and 1 means on?
So if Reg $50 is %00010000 then $2000-$3FFF Ram even if the Reg $20 is selected for Flash memory?

EDIT:
Forgot one more question:
6. Since Flash memory works just like RAM I was wondering what addresses have the modified ROM that you use for ZXBlast in Flash memory? I don't want to accidentally erase the ZXBlast OS :shock: