Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| boards:sbc:sbc_v2:sbc_v2-005:development [2021/04/14 21:02] – Initial import from Wayback Machine | boards:sbc:sbc_v2:sbc_v2-005:development [2026/06/15 12:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | /* Imported from Wayback Machine | ||
| + | | ||
| + | | ||
| + | | ||
| + | */ | ||
| + | |||
| + | ====== SBC V2-005 Development ====== | ||
| + | |||
| + | Updated design to include the following changes: | ||
| + | |||
| + | 1Mb Flash memory implemented with 2 x 512Kb Flash chips. | ||
| + | |||
| + | Dual boot ROMWBW BIOS support option. | ||
| + | |||
| + | Expanded ROM disk option. | ||
| + | |||
| + | Development of read/write Flash filesystem in ROMWBW | ||
| + | |||
| + | In this development, | ||
| + | |||
| + | Status: | ||
| + | |||
| + | Prototype working. | ||
| + | |||
| + | Board routed. | ||
| + | |||
| + | Writing 1024k rom file works. | ||
| + | |||
| + | Board constructed. | ||
| + | |||
| + | Testing … | ||
| + | |||
| + | Complete | ||
| + | |||
| + | To do: | ||
| + | |||
| + | Test design change and prototype. | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | |||
| + | Finalize and release design. | ||
| + | |||
| + | Speed test. | ||
| + | |||
| + | < | ||
| + | |||
| + | 10Mhz < | ||
| + | |||
| + | Running daily with 12Mhz. | ||
| + | |||
| + | Speeds as fast as 20Mhz reported working with F and AHCT parts and 55ns RAM/ROM YMMV. | ||
| + | |||
| + | **Complete.** | ||
| + | |||
| + | * Developing Flash4 update to support 1Mb write. | ||
| + | |||
| + | < | ||
| + | |||
| + | Flash4 Version 1.3.4 working – now in ROMWBW development build. | ||
| + | |||
| + | **Complete.** | ||
| + | |||
| + | Test AT49F040 compatibility | ||
| + | |||
| + | DIP32 chips received. | ||
| + | |||
| + | PLCC32 chips ordered. | ||
| + | |||
| + | Both 39SF040 and 49F040 PLCC chips work with Flash4 1.3.4 and version 005c board | ||
| + | |||
| + | **Complete.** | ||
| + | |||
| + | Developing BIOS Flash routines. | ||
| + | |||
| + | Chip ID working. | ||
| + | |||
| + | Chip erase working. | ||
| + | |||
| + | Sector erase working. | ||
| + | |||
| + | Sector write working. | ||
| + | |||
| + | Sector read working. | ||
| + | |||
| + | Reading/ | ||
| + | |||
| + | Flash routines integrated into memory disk drivers. | ||
| + | |||
| + | Verify after write added. | ||
| + | |||
| + | Testing and optimizing prior to release. | ||
| + | |||
| + | **Complete** | ||
| + | |||
| + | Develop bootrom flash utility for update or recovery. | ||
| + | |||
| + | Beta version submitted to ROMWBW development build. | ||
| + | |||
| + | **Complete** | ||
| + | |||
| + | Dual boot ROMWBW BIOS support option. | ||
| + | |||
| + | Canceled proposal to install jumpers to be able to boot from Flash #2. | ||
| + | |||
| + | Utilize Xmodem Flash Updater to Flash to Flash #2 | ||
| + | |||
| + | Duplicate function added to create backup of current Flash. | ||
| + | |||
| + | **Complete.** | ||
| + | |||
| + | [[boards: | ||
| + | |||
| + | {{[[lib: | ||
| + | |||
| + | Kicad files can be found [[https:// | ||
| + | |||
| + | Gerbers for sbc-v2-005i [[https:// | ||
| + | |||
| + | ====== Flash Programming ====== | ||
| + | |||
| + | Will Sowerbutts has updated his FLASH4 program to support programming one or more flash devices. | ||
| + | |||
| + | To assemble a 1024Kb ROMWBW rom, use the following as an example command line: '' | ||
| + | |||
| + | Example output below shows and existing 1024Kb Flash system setup with a 512Kb BIOS being reflashed to a 1024Kb BIOS. | ||
| + | |||
| + | <code code> | ||
| + | RomWBW HBIOS v3.1.1-pre.22, | ||
| + | |||
| + | SBC Z80 @ 10.000MHz | ||
| + | 0 MEM W/S, 1 I/O W/S, INT MODE 2 | ||
| + | 512KB ROM, 512KB RAM | ||
| + | |||
| + | ... | ||
| + | |||
| + | CP/M-80 v2.2, 54.0K TPA | ||
| + | |||
| + | B>h:crc b:*.* | ||
| + | CRC: File CRC Check Utility | ||
| + | ASM COM CBA8 | CLRDIR | ||
| + | COPY COM ADB0 | DDT COM AA45 | DDTZ COM FC4B | DUMP COM 3CE0 | ||
| + | ED COM 7D38 | FA16 CFG E248 | FDISK80 | ||
| + | FILEDATE CFG F929 | FILEDATE COM 7C71 | FLASH COM 5653 | INITDIR | ||
| + | INITDIR | ||
| + | LOAD COM 2A62 | MBASIC | ||
| + | PUTDS COM 35D0 | RELOG COM 8B9F | RMAC COM 5077 | STAT COM 4CED | ||
| + | SUBMIT | ||
| + | UNARC COM 8A9D | XSUB COM E86D | ZAP COM 7D48 | ZCAL COM 7373 | ||
| + | ZCNFG COM 27F3 | ZCNFG24 | ||
| + | ZSCONFIG COM 7853 | ZXD CFG B7AC | ZXD COM AF1C | ASSIGN | ||
| + | FDU COM 72FB | FORMAT | ||
| + | SURVEY | ||
| + | TIMER COM 111D | XM COM 9EAC | INTTEST | ||
| + | ZSYS SYS C70D | ||
| + | Sum of Listed CRCs = 6D17 | ||
| + | |||
| + | H>flash write SBC_std.rom /2 | ||
| + | FLASH4 by Will Sowerbutts < | ||
| + | |||
| + | Using RomWBW (v2.6 ) bank switching. | ||
| + | Flash memory chip ID is 0xBFB7: 39F040 (512KB) | ||
| + | Flash memory has 2 chips, each 128 sectors of 4096 bytes, total 1024KB | ||
| + | |||
| + | Write complete: Reprogrammed 224/256 sectors. | ||
| + | Verify (256 sectors) complete: OK! | ||
| + | |||
| + | reboot ... | ||
| + | |||
| + | RomWBW HBIOS v3.1.1-pre.22, | ||
| + | |||
| + | SBC Z80 @ 9.996MHz | ||
| + | 0 MEM W/S, 1 I/O W/S, INT MODE 2 | ||
| + | 1024KB ROM, 512KB RAM | ||
| + | |||
| + | ... | ||
| + | |||
| + | B>h:crc b:*.* | ||
| + | CRC: File CRC Check Utility | ||
| + | ASM COM CBA8 | CLOCKS | ||
| + | COPY CFG C718 | COPY COM ADB0 | COPY UPD 5602 | CR COM EE12 | ||
| + | DATSWEEP COM 22FA | DDT COM AA45 | DDTZ COM FC4B | DDTZ DOC 8DAC | ||
| + | DIRX COM E275 | DSCONFIG COM DA79 | DUMP COM 3CE0 | ED COM 7D38 | ||
| + | FA16 CFG E248 | FA16 DOC D9DD | FA16A FOR 0153 | FA16CFG | ||
| + | FAT COM B5B3 | FDISK80 | ||
| + | FILEDATE COM 7C71 | FLASH COM 5653 | INITDIR | ||
| + | LBREXT | ||
| + | LIB COM 7224 | LINK COM F122 | LOAD COM 2A62 | MAC COM 8E10 | ||
| + | MBASIC | ||
| + | PMEXT COM 8A89 | PUTBG COM 80F2 | PUTDS COM 35D0 | RELOG COM 8B9F | ||
| + | RMAC COM 5077 | SETTERM | ||
| + | STAT COM 4CED | SUBMIT | ||
| + | TD COM C435 | TERMBASE DAT B083 | TESTCLOK COM 5641 | UNARC COM 8A9D | ||
| + | UNCR COM A32E | UNZIP COM 86B3 | XSUB COM E86D | ZAP COM 7D48 | ||
| + | ZCAL COM 7373 | ZCNFG COM 27F3 | ZCNFG24 | ||
| + | ZDENST | ||
| + | ZSVSTAMP COM 4FC4 | ZSVSTAMP DOC 4CB4 | ZXD CFG B7AC | ZXD COM AF1C | ||
| + | ASSIGN | ||
| + | RTC COM 4721 | SURVEY | ||
| + | TALK COM B866 | TIMER COM 111D | XM COM 9EAC | INTTEST | ||
| + | CPM SYS 75D8 | ZSYS SYS C70D | ||
| + | Sum of Listed CRCs = E4CD | ||
| + | </ | ||
| + | |||
| + | The updated Flash4 can be found in Will Sowerbutts github repository https:// | ||
| + | |||
| + | ====== 39SF040 programming on the SBC-V2 ====== | ||
| + | |||
| + | Programming is complicated by the memory banking scheme and the critical aspect is that the sector erase and byte program addresses need to be read or written in conjunction with the bank select lines. | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | The following routines have been developed to access 39SF040 Flash devices in the ROMWBW environment: | ||
| + | |||
| + | Identify Flash Chip | ||
| + | |||
| + | Erase Flash Sector | ||
| + | |||
| + | Read Flash Sector | ||
| + | |||
| + | Verify Flash Sector | ||
| + | |||
| + | Write Flash Sector | ||
| + | |||
| + | These are relocatable routines as they must be executed from the high memory area (>8000h) as Flash and RAM is switched in and out of the low memory area (< | ||
| + | |||
| + | When these routines are required to be access by BIOS drivers, individual routines are copied to a high memory buffer before execution on an as needed basis. | ||
| + | |||
| + | When the routines are being used by an application then all routines can be relocated to high memory and remain there. | ||
| + | |||
| + | ====== Circuit Description ====== | ||
| + | |||
| + | The SBC-V2 already supports up to 1Mb of EPROM. However, the maximum DIP-32 style Flash device is 512Kb as Flash requires a write pin, so it has one less address line. | ||
| + | |||
| + | Two chip select signals need to be developed to cater for the change from a 1Mb device to 2x512Kb devices This is achieved using the existing chip select signal /CS_ROM and the A19 address line. | ||
| + | |||
| + | When /CS_ROM is active (low), A19 determines which chip is selected. The required logic table is: | ||
| + | |||
| + | <code code> | ||
| + | /CS_ROM A19 /CS_ROM1 /CS_ROM2 | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | Note that when /CS_ROM is high, neither flash chip is active. | ||
| + | |||
| + | The ideal logic elements to develop these signals are shown in Figure 1 below. However, the SBC-V2 does not have a spare OR gate so a discrete component OR gate was implemented initially. This required adding two diodes and a resistor to the board layout. | ||
| + | |||
| + | An OR gate can also be replaced by a NAND gate with both inputs inverted as shown in Figure 2. However, the SBC-V2 only has two spare inverters. | ||
| + | |||
| + | The final design is implemented in Figure 3 which uses the remaining spare components on the SBC-V2 board. | ||
| + | |||
| + | {{[[lib: | ||
| + | |||
| + | ====== Flash Filesystem ====== | ||
| + | |||
| + | Status | ||
| + | |||
| + | ROMWBW recognizes type of Flash chips installed. | ||
| + | |||
| + | HBIOS disables Flash file system driver if 39F040 chips are not installed. | ||
| + | |||
| + | First read and write to CP/M flash drive achieved. | ||
| + | |||
| + | Beta memory disk driver update submitted to ROMWBW development build. | ||
| + | |||
| + | {{[[lib: | ||
| + | |||
| + | To enable the flash file system add the following to your configuration file | ||
| + | |||
| + | <code code> | ||
| + | MDFFENABLE | ||
| + | </ | ||
| + | |||
| + | Then rebuild and update your existing flash BIOS as described under [[boards: | ||
| + | |||
| + | ====== Xmodem Flash Updater ====== | ||
| + | |||
| + | The Flash updater allows the ROMWBW BIOS to be upgraded via xmodem file transfer. | ||
| + | |||
| + | The Flash chip is programmed during the file transfer, avoiding the need for secondary storage to hold the ROM file. | ||
| + | |||
| + | As such as 128Mb *.upd system update file or a full 512Kb or 1024Kb *.rom image file can be written to the Flash memory without a secondary storage device. | ||
| + | |||
| + | {{[[lib: | ||
| + | |||
| + | The updater also has the facility to copy the contents of Flash #1 to Flash #2 in order to create a backup. | ||
| + | |||
| + | The Xmodem Flash Updater is supplied as a User ROM. To install, overwrite the current userrom.asm stub file with the updater.asm file. Then rebuild and update your existing flash BIOS as described under [[boards: | ||
| + | |||
| + | An 8Mhz or faster CPU clock is required to keep up with the default 38400 baud rate. Clock speeds as low as 2Mhz can be used if the baud rate is lowered to 9600 baud. The development build of ROMWBW has been extended to allow baud rates to be changed from the boot menu using the //Set Console Interface// option. | ||
| + | |||
| + | <code code> | ||
| + | I <u> [<c>] - Set Console Interface/ | ||
| + | </ | ||
| + | |||
| + | Example: To change current console to 9600 baud | ||
| + | |||
| + | <code code> | ||
| + | I 0 13 | ||
| + | </ | ||
| + | |||
| + | Baud rate codes are: | ||
| + | |||
| + | [[boards: | ||
