Support System Update process for systems with 39SF040 flash chips
Generate an update file. Updated docs. md.asm minors Update compression application
This commit is contained in:
28
ReadMe.md
28
ReadMe.md
@@ -1038,7 +1038,7 @@ system, you can use the FLASH application to update your ROM. The
|
||||
following is a typical example of transferring ROM image using XModem
|
||||
and flashing the chip in-situ.
|
||||
|
||||
E>xm r rom.img
|
||||
E>xm r rom.rom
|
||||
|
||||
XMODEM v12.5 - 07/13/86
|
||||
RBC, 28-Aug-2019 [WBW], ASCI
|
||||
@@ -1050,7 +1050,7 @@ and flashing the chip in-situ.
|
||||
|
||||
Thanks for the upload
|
||||
|
||||
E>flash write rom.img
|
||||
E>flash write rom.rom
|
||||
FLASH4 by Will Sowerbutts <will@sowerbutts.com> version 1.2.3
|
||||
|
||||
Using RomWBW (v2.6+) bank switching.
|
||||
@@ -1179,6 +1179,30 @@ images.
|
||||
- FAT.COM
|
||||
- TUNE.COM
|
||||
|
||||
# System Update
|
||||
|
||||
If the system running ROMWBW utilizes the SST39SF040 Flash chip then it is possible to do a System Update in place of
|
||||
a System Upgrade in some cases.
|
||||
|
||||
A System Update would involve only updating the BIOS, ROM applications and CP/M system.
|
||||
|
||||
A System Update may be more favorable than a System Upgrade in cases such as:
|
||||
|
||||
- Overwriting of the ROM drive is not desired.
|
||||
- Space is unavailable to hold a full ROMWBW ROM.
|
||||
- To mimimize time taken to transfer and flash a full ROM.
|
||||
- Configuration changes are only minor and do not impact disk applications.
|
||||
|
||||
The ROMWBW build process generates a system upgrade file along with the normal ROM image and can be identified by the
|
||||
extension ".upd". It will be 128Kb in size. In comparison the normal ROM image will have the extension ".rom" and be
|
||||
512Kb or 1024Kb in size.
|
||||
|
||||
Transferring and flashing the System Update is accomplished in the same manner as described above in *Upgrading* with
|
||||
the required difference being that the flash application needs to be directed to complete a partial flash using the
|
||||
/p command line switch.
|
||||
|
||||
`E>flash write rom.upd /p`
|
||||
|
||||
# RomWBW Distribution
|
||||
|
||||
All source code and distributions are maintained on GitHub. Code
|
||||
|
||||
@@ -92,10 +92,11 @@ $ErrorAction = 'Stop'
|
||||
# Directories of required build tools (TASM & cpmtools)
|
||||
$TasmPath = '..\..\tools\tasm32'
|
||||
$CpmToolsPath = '..\..\tools\cpmtools'
|
||||
$LzaToolsPath = '..\..\tools\lzsa'
|
||||
|
||||
# Add tool directories to PATH and setup TASM's TABS directory path
|
||||
$env:TASMTABS = $TasmPath
|
||||
$env:PATH = $TasmPath + ';' + $CpmToolsPath + ';' + $env:PATH
|
||||
$env:PATH = $TasmPath + ';' + $CpmToolsPath + ';' + $LzaToolsPath + ';' + $env:PATH
|
||||
|
||||
# Initialize working variables
|
||||
$OutDir = "../../Binary" # Output directory for final image file
|
||||
@@ -105,6 +106,7 @@ $RomDiskFile = "RomDisk.tmp" # Temporary filename used to create ROM disk image
|
||||
$RomFile = "${OutDir}/${RomName}.rom" # Final name of ROM image
|
||||
$ComFile = "${OutDir}/${RomName}.com" # Final name of COM image (command line loadable HBIOS/CBIOS)
|
||||
$ImgFile = "${OutDir}/${RomName}.img" # Final name of IMG image (memory loadable HBIOS/CBIOS image)
|
||||
$UpdFile = "${OutDir}/${RomName}.upd" # Final name of System ROM image
|
||||
|
||||
# Select the proper CBIOS to include in the ROM. UNA is special.
|
||||
if ($Platform -eq "UNA") {$Bios = 'una'} else {$Bios = 'wbw'}
|
||||
@@ -233,19 +235,30 @@ cpmchattr -f $RomFmt $RomDiskFile r 0:*.*
|
||||
# Finally, the individual binary components are concatenated together to produce
|
||||
# the final images.
|
||||
#
|
||||
$SystemFileList = "hbios_rom.bin", "osimg.bin", "osimg1.bin", "osimg.bin"
|
||||
if ($Platform -eq "UNA")
|
||||
{
|
||||
Copy-Item 'osimg.bin' ${OutDir}\UNA_WBW_SYS.bin
|
||||
Copy-Item $RomDiskFile ${OutDir}\UNA_WBW_ROM${ROMSize}.bin
|
||||
|
||||
Concat '..\UBIOS\UNA-BIOS.BIN','osimg.bin','..\UBIOS\FSFAT.BIN',$RomDiskFile $RomFile
|
||||
Remove-Item $RomDiskFile
|
||||
}
|
||||
else
|
||||
{
|
||||
Concat 'hbios_rom.bin','osimg.bin','osimg1.bin','osimg.bin',$RomDiskFile $RomFile
|
||||
Concat 'hbios_app.bin','osimg_small.bin' $ComFile
|
||||
# Concat 'hbios_img.bin','osimg_small.bin' $ImgFile
|
||||
Remove-Item $RomDiskFile
|
||||
Set-Content $UpdFile -Value $null
|
||||
foreach ($InputFile in $SystemFileList)
|
||||
{
|
||||
Copy-Item $InputFile $RomDiskFile
|
||||
# lzsa -f2 -r $InputFile $RomDiskFile
|
||||
Add-Content $UpdFile -Value ([System.IO.File]::ReadAllBytes($RomDiskFile)) -Encoding byte
|
||||
Remove-Item $RomDiskFile
|
||||
}
|
||||
}
|
||||
|
||||
# Remove the temporary working ROM disk file
|
||||
Remove-Item $RomDiskFile
|
||||
#Remove-Item $RomDiskFile
|
||||
|
||||
@@ -472,6 +472,7 @@ MD_SECM1: ; DESIRED SECTOR IS IN BUFFER
|
||||
;
|
||||
MD_LBA4K .DW $FFFF ; LBA OF CURRENT SECTOR
|
||||
MD_FBAS .DW $FFFF ; BANK AND SECTOR
|
||||
;MD_FLOP .DW $FFFF ; ADDRESS OF LAST OPERATION CALLED
|
||||
#ENDIF
|
||||
;
|
||||
; READ RAM / ROM
|
||||
@@ -710,17 +711,18 @@ MD_PROBE:
|
||||
#ENDIF
|
||||
PUSH HL
|
||||
CALL MD_CALBAS ; SETUP BANK AND SECTOR
|
||||
LD HL,MD_FIDENT_R ; PUT ROUTINE TO CALL
|
||||
LD HL,MD_FIDEN_R ; PUT ROUTINE TO CALL
|
||||
CALL MD_FNCALL ; EXECUTE: IDENTIFY FLASH CHIP
|
||||
|
||||
LD HL,MD_TGTDEV ; IF WE MATCH WITH
|
||||
XOR A ; A NON 39SF040
|
||||
SBC HL,BC ; CHIP SET THE
|
||||
LD A,(MD_FFSEN) ; R/W FLAG TO R/O
|
||||
OR H
|
||||
OR L ; A NON ZERO VALUE
|
||||
LD (MD_FFSEN),A ; MEANS WE CAN'T
|
||||
POP HL ; ENABLE FLASH WRITING
|
||||
JR Z,MD_PR2 ; R/W FLAG TO R/O
|
||||
LD HL,MD_FFSEN ; A NON ZERO VALUE
|
||||
SET 0,(HL) ; MEANS WE CAN'T
|
||||
; ENABLE FLASH WRITING;
|
||||
MD_PR2:
|
||||
POP HL
|
||||
#IF (MD_FVBS==1)
|
||||
CALL MD_LAND ; LOOKUP AND DISPLAY
|
||||
#ENDIF
|
||||
@@ -798,32 +800,32 @@ FF_NXT2:
|
||||
;======================================================================
|
||||
; COMMON FUNCTION CALL FOR:
|
||||
;
|
||||
; MD_FIDENT_R - IDENTIFY FLASH CHIP
|
||||
; MD_FIDEN_R - IDENTIFY FLASH CHIP
|
||||
; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED
|
||||
; HL POINTS TO THE ROUTINE TO RELOCATED AND CALLED
|
||||
; HL POINTS TO THE ROUTINE TO BE RELOCATED AND CALLED
|
||||
; ON EXIT BC CONTAINS THE CHIP ID BYTES.
|
||||
; A NO STATUS IS RETURNED
|
||||
;
|
||||
; MD_FERAS_R - ERASE FLASH SECTOR
|
||||
; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED
|
||||
; HL POINTS TO THE ROUTINE TO RELOCATED AND CALLED
|
||||
; HL POINTS TO THE ROUTINE TO BE RELOCATED AND CALLED
|
||||
; ON EXIT A RETURNS STATUS 0=SUCCESS NZ=FAIL
|
||||
;
|
||||
; MD_FREAD_R - READ FLASH SECTOR
|
||||
; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED
|
||||
; HL POINTS TO THE ROUTINE TO RELOCATED AND CALLED
|
||||
; HL POINTS TO THE ROUTINE TO BE RELOCATED AND CALLED
|
||||
; IX POINTS TO WHERE TO SAVE DATA
|
||||
; ON EXIT A NO STATUS IS RETURNED
|
||||
;
|
||||
; MD_VERI_R - VERIFY FLASH SECTOR
|
||||
; MD_FVERI_R - VERIFY FLASH SECTOR
|
||||
; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED
|
||||
; HL POINTS TO THE ROUTINE TO RELOCATED AND CALLED
|
||||
; HL POINTS TO THE ROUTINE TO BE RELOCATED AND CALLED
|
||||
; IX POINTS TO DATA TO COMPARE.
|
||||
; ON EXIT A RETURNS STATUS 0=SUCCESS NZ=FAIL
|
||||
;
|
||||
; MD_FWRIT_R - WRITE FLASH SECTOR
|
||||
; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED
|
||||
; HL POINTS TO THE ROUTINE TO RELOCATED AND CALLED
|
||||
; HL POINTS TO THE ROUTINE TO BE RELOCATED AND CALLED
|
||||
; IX POINTS TO DATA TO BE WRITTEN
|
||||
; ON EXIT A NO STATUS IS RETURNED
|
||||
;
|
||||
@@ -835,12 +837,22 @@ FF_NXT2:
|
||||
;
|
||||
MD_FNCALL: ; USING HBX_BUF FOR CODE AREA
|
||||
;
|
||||
; EX DE,HL ; IF WE ARE
|
||||
; LD HL,(MD_FLOP) ; REPEATING THE
|
||||
; XOR A ; SAME OPERATION
|
||||
; SBC HL,DE ; AS PREVIOUS
|
||||
; EX DE,HL ; DONT COPY
|
||||
; JR Z,MD_FSAME ; IF THE SAME, DE=0
|
||||
; LD (MD_FLOP),HL ; SAVE CURRENT OPERATION FOR NEXT TIME
|
||||
|
||||
LD DE,HBX_BUF ; EXECUTE / START ADDRESS
|
||||
LD BC,MD_CSIZE ; CODE SIZE. MAXIMUM 64 BYTES
|
||||
LDIR ; COPY OUR RELOCATABLE CODE TO THE BUFFER
|
||||
;
|
||||
LD D,B ; PRESET DE TO ZERO TO REDUCE
|
||||
LD E,B ; CODE SIZE IN RELOCATABLE CODE
|
||||
;
|
||||
;MD_FSAME:
|
||||
;
|
||||
LD BC,(MD_FBAS) ; PUT BANK AND SECTOR DATA IN BC
|
||||
;
|
||||
@@ -891,7 +903,7 @@ MD_SAVSTK .DW 0
|
||||
; NO STATUS IS RETURNED
|
||||
;======================================================================
|
||||
;
|
||||
MD_FIDENT_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
|
||||
MD_FIDEN_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
|
||||
;
|
||||
LD D,A ; SAVE CURRENT BANK
|
||||
;
|
||||
@@ -914,7 +926,7 @@ MD_FIDENT_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
|
||||
;
|
||||
; RET
|
||||
;
|
||||
MD_I_SZ .EQU $-MD_FIDENT_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
|
||||
MD_I_SZ .EQU $-MD_FIDEN_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
|
||||
;
|
||||
;======================================================================
|
||||
; ERASE FLASH SECTOR.
|
||||
@@ -1189,7 +1201,7 @@ MD_FFSEN .DB 00h ; FLASH FILES SYSTEM ENABLE
|
||||
;======================================================================
|
||||
;
|
||||
#IF (MD_FDBG==1)
|
||||
.ECHO "MD_FIDENT_R "
|
||||
.ECHO "MD_FIDEN_R "
|
||||
.ECHO MD_I_SZ
|
||||
.ECHO "\n"
|
||||
;
|
||||
@@ -1197,7 +1209,7 @@ MD_FFSEN .DB 00h ; FLASH FILES SYSTEM ENABLE
|
||||
.ECHO MD_R_SZ
|
||||
.ECHO "\n"
|
||||
;
|
||||
.ECHO "MD_VERI_R "
|
||||
.ECHO "MD_FVERI_R "
|
||||
.ECHO MD_V_SZ
|
||||
.ECHO "\n"
|
||||
;
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user