Programming flash eprom on DIVIDE+
Can you test it on DIVIDE PLUS ?
http://velesoft.speccy.cz/other/flasher-divide-plus.zip
(This flash utility is WINSTON's flasher for diagnostic board modified for use with DIVIDE PLUS/MB02+).
- Save snapshots from ZIP archive to HDD/CF for your DIVIDE PLUS interface
- Load this Z80 or SNA snapshot in FATWARE on DIVIDE PLUS interface
- after start menu press "x" (erase flash rom sector) and in next menu press key "6". Will erased rom pages 24-27 on DIVIDE PLUS eprom chip.
- press key "1" for exit to main menu
- press key "w" and in next nemu press key "r". Will programm new ZX rom in rom page 27.
- press key "1" for exit to main menu
- press key "r" for start new zx rom
If will start new ZX rom with bold char font then flashing work correct and this flash utility can be used for upgrade divide systems in 512kB rom chip in your DIVIDE PLUS.
I can help you via I C Q : 306 187 462
http://velesoft.speccy.cz/other/flasher-divide-plus.zip
(This flash utility is WINSTON's flasher for diagnostic board modified for use with DIVIDE PLUS/MB02+).
- Save snapshots from ZIP archive to HDD/CF for your DIVIDE PLUS interface
- Load this Z80 or SNA snapshot in FATWARE on DIVIDE PLUS interface
- after start menu press "x" (erase flash rom sector) and in next menu press key "6". Will erased rom pages 24-27 on DIVIDE PLUS eprom chip.
- press key "1" for exit to main menu
- press key "w" and in next nemu press key "r". Will programm new ZX rom in rom page 27.
- press key "1" for exit to main menu
- press key "r" for start new zx rom
If will start new ZX rom with bold char font then flashing work correct and this flash utility can be used for upgrade divide systems in 512kB rom chip in your DIVIDE PLUS.
I can help you via I C Q : 306 187 462
Post edited by velesoft on
Comments
I don't have DIVIDE PLUS but it's tested on MB02+ clone and work perfect. DIVIDE PLUS use also MB02 memory paging port = is compatible with MB02+ = this flasher must work. It's not dangerous for testing. Flasher erase only end of 512kB rom (this is unused rom space)
If will this flash utility work, then I can write new better FIRMWARE SELECTOR(freeware with source code) for DivIDE PLUS and release free flasher. All this can be add on my web page about DIVIDE PLUS:
http://velesoft.speccy.cz/zx/divide/divide_plus/divide_plus.htm
This is screenshot of FLASHER for my PROFI INTERFACE. After easy modification can work also with DIVIDE PLUS or MB02+ interface.
Somebody always wants to be first :-)
I would need first to dump full ROM image for backup, but I am too lazy to write tool to do that :grin:
No problem. I will write utility for backup original 512kB flash eprom to TAP file (in RESIDOS). OK ? After backup you can test my flasher utility.....
Nobody else wants to try first ? :razz:
Ok, I can test it, but time is my limit.
Need to find working ZX now.
I will also check if I can get quickly replacement AM29F040.
Can you share source code for this test flasher ?
Is procedure the same for AM29F040 & AM29F010 ?
This flashers are designed for AM29F040 only. AM29F010 is not supported yet.
Source code of flasher will free. Please wait some hours....
(My first post :smile:)
I am very interested in an open source flasher and firmware selector for my DivIDE+. I have followed your instructions above and I think it works! I am using a Speccy +128K toast rack. I get this picture:
However, if I start pressing keys and press two keys at once, the screen goes black or I get coloured or white stripes. The key presses still make a 'click' sound as though the Speccy is still alive, only I can not see what I am typing.
If this does work as expected, why don't I need to change the EEPROM jumper on the DivIDE+ board?
I also tried booting from the other ROM pages, 0,1,2,3,4,5... but all of them produced lines on the screen and I could then only reset my Speccy. I expected to be able to load the other ROMS on my DivIDE+ like ResiDOS etc?
If I load ROM page 'v' (31, the last one) I get 48K Basic and a program listing that looks like the last file I loaded via FATWare (before the firmware flasher) but it does not load or run properly.
I am happy to do some more testing if it helps to get open source tools developed. I am very keen to get ESXDOS and some kind of TR-DOS working so that I can run some cool Russian Demos etc and ultimately some AY trackers etc.
Regards.......
Cool. Please test this:
http://velesoft.speccy.cz/other/flasher-divide-plus-2.zip
- Save snapshots from ZIP archive to HDD/CF for your DIVIDE PLUS interface
- Load this Z80 or SNA snapshot in FATWARE on DIVIDE PLUS interface
- after start menu press "x" (erase flash rom sector) and in next menu press key "6". Will erased rom pages 24-27 on DIVIDE PLUS eprom chip.
- press key "1" for exit to main menu
- press key "w" and in next nemu press key "r". Will program new ZX rom in rom page 27.
- press key "1" for exit to main menu
- press key "r" for start new zx rom
After restart your ZX is possible connect this new ZX rom via OUT 23,128+27 from ZX basic.
If will start new ZX rom with text "ZX48 rom for DIVIDE PLUS" then flashing work correct and this flash utility can be used for upgrade divide systems in 512kB rom chip in your DIVIDE PLUS.
I can help you via I C Q : 306 187 462
The flash seems to work as expected. I get "ZX48 rom for DIVIDE PLUS" when loading from the flasher software however, when I reset the Spectrum, the OUT command does nothing except say OK. I have added you on ICQ, my number is 617 164 825. Cheers.....
http://velesoft.speccy.cz/other/divide+flasher-systems.zip
And full source code (include SJASM assembler and runable BAT file):
http://velesoft.speccy.cz/other/divide-plus_flasher-big-source.zip
(source is based on WINSTON's flash utility for zx diagnostic board)
This flasher in TAP file contain more roms with divide systems, different zx roms and IF2 cartridge games.
After start show menu with possibility load any 16kB file for flashing to rom. TAP contain this divide systems:
ESXDOS
BIOS (my BIOS)
FATWARE 12a
FATWARE128(version for ZX128 with english rom)
+DIVIDE128(version only for ZX128/+2)
MDOS 3(2009)
DEMFIR 07b
GASWARE
zx roms:
SE BASIC
DIDAKTIK
TEST ROM
etc...
And some IF2 games
MANUAL FOR FLASHING SYSTEMS TO DIVIDE PLUS
- load and run this tap file
- via key "L" change divide systems,zx roms or IF2 game
- press "F" for start flash utility
- open jumper on DIVIDE PLUS (jumper for enable flashing rom)
- press "x" for select 64kB block of rom for erasing before flashing
- press "6" for erase 6th block with rom pages 24-27
- in main menu press "w" for flashing/writing rom image to divide rom
- press "p" for flash to rom page 25
- after return to main menu connect jumper back (disable flashing rom)
- press "z" for return to basic
It's install any DIVIDE system, ZX ROM or IF2 game to rom page 25.
Way for run this system: OUT 23,12*2
Way for switch to new ZX rom or IF2 game: OUT 23,128+25
DIVIDE PLUS contain 16x original DIVIDE memory. Each this memory area can use different system. Original FIRMWARE SELECTOR for DIVIDE PLUS use this DIVIDE blocks:
system number 0 (rom page 1 ) - selector code
system number 1 (rom page 3 ) - demfir
system number 2 (rom page 5) - +divide
system number 3 (rom page 7) - mdos 3
system number 4-13 (rom pages 9,11,13,15,17,19,21,23,25,27 = 10x free divide rom memory (unused ?)
system number 14 (rom page 29) - fatware
system number 15 (rom page 31) - free memory (unused ?)
Switching between different DIVIDE systems:
OUT 23,system number * 2
WARNING: flash programming to rom pages 1,3,5,7,29 or erasing 64kB sectors 0,1,7 can erase original firmware selector with systems. For correct testing you can use free (unused) rom pages. Before programming is better backup full 512kB rom from DIVIDE PLUS to TAP file on HDD/CF (for possibility reflash rom to original state). I can write utility for it :-)
I will write small easy firmware selector for DIVIDE PLUS. This selector can be used as replacement of original firmware selector from RWAP. Source code will free. Selector rom will contain utility for flashing next systems to rom chip and editor with possibility add names of new systems in menu. I need create new graphic/design for selector screen... please help. Theoretically can be used skin selector with use custom graphic.
This is selector by RWAPsoftware:
http://velesoft.speccy.cz/zx/divide/divide_plus/divide_plus_firmware-selector.jpg
Any idea for new better design ?
Can be...
My BIOS not use extended memory in DIVIDE PLUS, only install systems from file on HDD. Can be used on original DIVIDE and on DIVIDE PLUS as easy firmware selector. You must load my flash utility, erase 64kB sector 0 and flash BIOS to rom page 1. After power on will always start my bios. But new version of firmware selector will very very easy code or can be writed in ZX basic. After reset/start ZX code in rom 1 copy BASIC program from rom to ZX ram + move short code for system switching. BASIC program will very easy and short and any user can create new menu... Assembler is used only for system installation. BREAK key can be disabled via POKE :-)
Or complette in machine code ?
Apart from the fact that velesoft's work is again a great job I like the option for any user to change/create an adapted menu.
So I vote for not pure machine code and the classic 128 menu style.
Personally, I like the idea of it being written in BASIC and love the design based on the +128K startup menu.
Can I suggest some enhancements which are included in Tygrys' firmware selector:
a) An option to start in 48K or 128K Mode
b) An option to load problem games (such as Alien 8).
www.rwapsoftware.co.uk
www.sellmyretro.com
Can be. As I know then all ultimate games ( also ALIEN 8 ) contain dangerous code with access to port 7FFD = on ZX128 models this games crash. All this games can be loaded in 48kB mode (I must disable paging on port 7FFD) or can be used fixed games (I have fixed versions for work in 48/128 mode)
Load by tape, make my own snapshot as a .z80 file using the Task Manager part of ResiDOS. The game will not work from the File Browser in FATware, but if you re enter ResiDOS and use the %snapload command to load it, eg %snapload "Alien8.Z80", it works perfectly.
FATWARE (version for ZX128/+2) support reset to true 48 mode:
R + NMI - software reset
RESET+SHIFT - start to USR 0 mode (48 rom with 128kB memory)
RESET+EXTEND MODE - start to 48 mode (48 rom with 48kB memory)
And this FATWARE is usable on DIVIDE PLUS. Then is possible easy running ultimate games.
First example of configurable menu:
This menu will full reconfigurable from ZX basic. You can change text in menu, add next sub menu, etc... Can add "ZX ROMS" or "ROM GAMES" for next sub menu. Any custom roms is possible run from any system for DIVIDE. In FATWARE,ESXDOS,DEMFIR, need only use TAP file fith rom installer + rom image(s). Its very easy.
CUSTOM ROM INSTALLER FOR DIVIDE PLUS (don't need any system, can be loaded from real TAP)
Tap file contain this basic:
1 clear 31999:load "rominst" code 32000
2 input "set ram page(0-31) for install rom: ";ram : poke 32002,ram
3 input "filename with rom image: ";a$ : load a$ code 32768,16384
4 randomize usr 32000
next file in TAP is code "rominst" with starting adress 32000 and contain this code:
ORG 32000
DI
LD A,26 ;number of ram page in 512kB ram in divide plus (ram 0-31)
OR 64+32 ;set allram mode with write enable
OUT (23),A
LD HL,32768
LD DE,0
LD BC,16384
LDIR ;copy rom image 16kB from adress 32768 to ram adress 0
XOR 32 ;disable writing in low 16kB ram(rom emulation)
OUT (23),A
RST 0 ;software reset
Next block in TAP is code file with ZX rom image any name and length 16384 files. Instead rom image can be loaded IF2 games.
After real reset will allram mode disabled, but you can from any system switch to new rom via OUT 23,64+ram page with your rom. Warning: some systems on divide plus use different ram pages in DIVIDE PLUS memory = if you install new custom ZX rom then is better use only pages 2-7 (can destroy ram data of installed divide systems DEMFIR,+DIVIDE,MDOS3) or pages 8-27 (can destroy data od RESIDOS) or pages 28-31 (can destroy data of FATWARE). Best free pages is 24-27 ? Testing is not so dagerous, it's only ram and each system can erase and refresh this memory if need.
This is full installation code for custom roms. If you install BSROM to ram page 24 then you can swith between any divide systems and custom roms without need zx reset !!! OUT 23,64+24 disable any divide system and set your BSROM and OUT 23,2(demfir)/4(+divide)/6(mdos3)/28(fatware). For example is possible load any basic loader from TAP file via FATWARE, switch to BSROM and modify basic, switch to residos and save new TAP to HDD/CF.
This is example of installation code with BS-ROM 140:
http://velesoft.speccy.cz/other/divide+bsrom140-allram.zip
Machine code contain some routines for:
- switch DIVIDE systems
- switch 16kB roms (with custom roms/games..)
- copy any system from DIVIDE memory 1-15(number of virtual divide) to DIVIDE number 0 with mapram mode. This enable use DIVIDE systems on DIVIDE PLUS with problematic KEMPSTON interface (need install SYSTEM without KEMPSTON interface, power off ZX, connect KEMP.INTERFACE and power on ZX).
- support for write/read configuration bytes from DIVIDE PLUS ram page(31). My menu will support configuration in extended ram 512kB. Configuration will contain number of last selected DIVIDE firmware, type of memory mode (DIVIDE or MB02+), etc...
Option to start in 48K in Tygrys selector disable 128kB memory or only start original divide systems in USR0 mode with enable paging ?
And 128K mode = start divid systems with active D5=1 on port 23(block divide memory mapping if 128rom is select) ?
We need 3 ways for run firmwares:
1) original mode (divide memory mapping work always - as on orig.divide)
2) 128kB mode (divide memory mapping work only if 48rom is select)
3) 48kB mode with disable 128kB memory (for bloblematic games - ULTIMATE, etc...)
As new feature I can implement software switch 128kB enable/disable (yes, it's possible disable 128kB memory paging via OUT 32765,48 and in any time in same menu enable port 32765 !!! It's impossible on real ZX128/+2/+2A/+3 machines, but in combination with DIVIDE PLUS features (hardware reset via OUT 23,192) is possible all... :-)
Tested and confirmed working! :smile:
Thank for testing. I will continue on development.
DIVIDE PLUS use 512kB rom and 512kB sram. We can see this memory as rom pages 0-31 and sram pages 0-31. Each page size is 16kB. This is original layout for TYGRIS firmware selector:
rom 0 = unused
rom 1 + sram 0,1 = divide position 0 (used for firmware selector)
rom 2 = unused
rom 3 + sram 2,3 = divide position 1 (demfir)
rom 4 = unused
rom 5 + sram 4,5 = divide position 2 (+divide)
rom 6 = unused
rom 7 + sram 6,7 = divide position 3 (mdos 3)
rom 8 to 28 = unused
sram 8 to max.27 = RESIDOS
rom 29+ sram 28,29 = divide position 14 (fatware)
rom 30,31 + sram 30,31 = unused
As you can see then rom 8 to 28 can be used for next new divide firmwares, but RESIDOS use sram part from this systems(sram 8 to ?? max.27). Theoretically can RESIDOS access max. to 384kB of DIVIDE PLUS sram memory. But FATWARE use ram pages 28 and 29 at end of sram memory = is dangerous use for RESIDOS more than 320kB (sram pages 8-27). Any access to higher memory = rewrite divide ram pages of FATWARE system.
I need more space for new firmwares then RESIDOS instalator must be limited for smaller memory than 32kB. Better idea: all DIVIDE systems will placed from begin of rom/ram and RESIDOS will begin from end of memory (from page 30 to 8(?) ). And last sram page 31 will use for setup/configuration data...
Perhaps these screen captures will help?
This sounds like the best idea. Does that mean the installer for ResiDOS needs to be reprogrammed?