Programming flash eprom on DIVIDE+

edited December 2010 in Hardware
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
Post edited by velesoft on
«1

Comments

  • edited September 2010
    Did you test on yours ? :)
  • edited September 2010
    kpuchatek wrote: »
    Did you test on yours ? :)

    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.
    flasher-password.png
  • edited September 2010
    I may give a try, but I'm slow (only broken spectrums on table, where is the working one :-?)
    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:
  • edited September 2010
    kpuchatek wrote: »
    I may give a try, but I'm slow (only broken spectrums on table, where is the working one :-?)
    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.....
  • edited September 2010
    This will be useful tool anyway.
    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 ?
  • edited September 2010
    kpuchatek wrote: »
    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....
  • edited November 2010
    Hi Velesoft,

    (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:

    Speccy128+divide+flasher.png

    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.......
  • edited November 2010
    toadstool wrote: »
    Hi Velesoft,

    (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:

    Speccy128+divide+flasher.png

    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
  • edited November 2010
    Hi Velesoft,

    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.....
  • edited November 2010
    Ah-ha - after OUT 23,128+27 I have to run RANDOMIZE USR 0 and my Speccy resets into the new "ZX48 rom for DIVIDE PLUS" !! Nice one!
  • edited November 2010
    This is full flash utility for DIVIDE PLUS or MB02+ interface
    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)

    divide-plus-flasher1.png
    divide-plus-flasher2.png
    divide-plus-flasher3.png

    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 :-)
  • edited November 2010
    NEW FREEWARE - FIRMWARE SELECTOR FOR DIVIDE PLUS

    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 ?
  • edited November 2010
    Personally speaking, I really like the design of the selector in your BIOS Velesoft because it is reminiscent of the original +128K selector. Nice and simple and clear with the ubiquitous 'rainbow'. Perfect!
  • edited November 2010
    toadstool wrote: »
    Personally speaking, I really like the design of the selector in your BIOS Velesoft because it is reminiscent of the original +128K selector. Nice and simple and clear with the ubiquitous 'rainbow'. Perfect!

    Can be...
    divide-boot_menu.gif

    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 ?
  • edited November 2010
    velesoft wrote: »
    Can be...

    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.
  • edited November 2010
    I think this is more good work by Velesoft and when complete, I will be more than willing to include it on my website as an option.

    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).
    Supporting Sinclairs since 1986 !

    www.rwapsoftware.co.uk
    www.sellmyretro.com
  • edited November 2010
    rwap wrote: »
    I think this is more good work by Velesoft and when complete, I will be more than willing to include it on my website as an option.

    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).

    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)
  • edited November 2010
    If anybody has had problems making Knight Lore or Alien 8 work, what I did was this:

    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.
  • edited November 2010
    Alien 8 wrote: »
    If anybody has had problems making Knight Lore or Alien 8 work, what I did was this:

    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.
  • edited November 2010
    rwap wrote: »
    I think this is more good work by Velesoft and when complete, I will be more than willing to include it on my website as an option.

    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).

    First example of configurable menu:
    menu-example1.png
  • edited November 2010
    Magnificent! :-) Can SE Basic run from this menu or would it be better to run it through ResiDOS? Much respect for all the work so far....
  • edited November 2010
    toadstool wrote: »
    Magnificent! :-) Can SE Basic run from this menu or would it be better to run it through ResiDOS? Much respect for all the work so far....

    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
  • edited November 2010
    First beta version of new FIRMWARE SELECTOR for DIVIDE PLUS is ready for testing on real hardware. This version exist as *.Z80 file for loading in any time in any system. Only show menu with possibility select systems (not contain new roms for flashing, only switch systems via OUT command). On real hardware select different systems than on menu, but I need know if it work or no. Snapshot contain runable basic file and machine code from adress 23296 (221 bytes) and RANDOMIZE USR 32768 start assembler PROMETHEUS48 with source code... :-) Can anybody test it on ZX Spectrum with DIVIDE PLUS ?

    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...

    menu-example2.png
  • edited November 2010
    rwap wrote: »
    I think this is more good work by Velesoft and when complete, I will be more than willing to include it on my website as an option.

    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).

    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... :-)
  • edited November 2010
    velesoft wrote: »
    First beta version of new FIRMWARE SELECTOR for DIVIDE PLUS is ready for testing on real hardware. This version exist as *.Z80 file for loading in any time in any system. Only show menu with possibility select systems (not contain new roms for flashing, only switch systems via OUT command). On real hardware select different systems than on menu, but I need know if it work or no. Snapshot contain runable basic file and machine code from adress 23296 (221 bytes) and RANDOMIZE USR 32768 start assembler PROMETHEUS48 with source code... :-) Can anybody test it on ZX Spectrum with DIVIDE PLUS ?

    Tested and confirmed working! :smile:
  • edited November 2010
    toadstool wrote: »
    Tested and confirmed working! :smile:

    Thank for testing. I will continue on development.
  • edited November 2010
    New firmware selector can use different memory layout of systems in 512kB rom chip. But as I see then RESIDOS can be install only from ram page 8 and can use all other memory ram up to page 31.

    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...
  • edited December 2010
    If RESIDOS is set in original FIRMWARE SELECTOR on DIVIDE PLUS then start installation of RESIDOS with basic ? (copy RESIDOS installation code with basic loader to ZX ram).
  • edited December 2010
    On the original DivIDE+, you have to flash ResiDOS from FATWare first using the TAP file from the ResiDOS website. After that you can select ResiDOS from the original menu (by pressing 1) and it starts automatically. After that you can install ResiDOS packages (tapeio etc) and other ROMs (including BASIC ROMS). I am reasonably confident that ResiDOS and any packages or ROMS installed from within it are installed in battery backed RAM but I could be wrong.....


    Perhaps these screen captures will help?

    ResiDOS1.png
    ResiDOS2.png
    ResiDOS3.png
  • edited December 2010
    velesoft wrote: »
    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...

    This sounds like the best idea. Does that mean the installer for ResiDOS needs to be reprogrammed?
Sign In or Register to comment.