41CL ROM UPDATE PRESENTATION BY SYLVAIN CÔTÉ PC.SYLVAIN.COTE@GMAIL.COM 2016-09-15 Slide 1
Agenda Summary 41CL Update – Manual Process ◦ Presentation Highlights ◦ Initialization ◦ Flash Update Process ◦ Power Cycle & Cleanup ◦ Databases Flash Sector Update References 41CL Update – Semi-Automatic Process ◦ Acknowledgements ◦ Documents & Web Sites ◦ Introduction ◦ Board Models ◦ Tools Review ◦ Management Modules ◦ CLUPD Operations (Overlay & Details) ◦ Management Functions ◦ pc41sc.ru Options ◦ RAM Memory Usage ◦ Initialization, Power Cycle & Cleanup Demo ◦ Databases Flash Sector Update Demo ROM Images - Baseline Creation ◦ Flash Sector Update Demo ◦ Data Importing ◦ Flash Sector Overwrite Demo ◦ File Management & Data Gathering ◦ CLUPD Source Code (Part 1, 2, & 3) ◦ File Management Sample ◦ Data Gathering Sample Questions & Answers ◦ Spreadsheet Columns Description 2016-09-15 Slide 2
SUMMARY 2016-09-15 Slide 3
Presentation Highlights Presentation review Update process overview Technical data review ROM images baselining Manual update process review Semi-automatic tools introduction Semi-automatic update process review Questions & Answers 2016-09-15 Slide 4
Flash Update Process Track 1 • Flash Sector Update Track 2 • Flash Sector Overwrite • Copy Flash sector to RAM • Erase RAM Read Erase • Download updated/new image(s) • Download updated/new image(s) Load Load • Erase Flash sector • Erase Flash sector Erase Erase • Copy RAM to Flash sector • Copy RAM to Flash sector Write Write • End of Track 1 • End of Track 2 End End 2016-09-15 Slide 5
REFERENCES 2016-09-15 Slide 6
Acknowledgements Monte Dalrymple for having created the 41CL, his patience and support. Ángel Martin for his relentless development of advanced HP-41 ROMs, including some great 41CL exclusives. Geir Isene for his great pc41 ruby program. Robert Prosperi and Dave Frederickson for their continuous support. 2016-09-15 Slide 7
Documents & Web Sites Web Sites ◦ 41CL Home www.systemyde.com/hp41/ ◦ HP-41 Home www.hp41.org ◦ The Museum of HP Calculators www.hpmuseum.org Manuals ◦ Updating the 41CL Flash www.systemyde.com/pdf/cl_flash.pdf ◦ 41CL Calculator Manual www.systemyde.com/pdf/sy41cl.pdf ◦ 41CL Memory Functions www.systemyde.com/pdf/cl_memory.pdf ◦ 41CL Extreme Functions www.systemyde.com/pdf/cl_extreme.pdf ◦ 41CL Memory Reference v3+ www.systemyde.com/pdf/mem_ref.pdf ◦ 41CL Memory Reference v2 www.systemyde.com/pdf/mem_ref_v2.pdf 2016-09-15 Slide 8
Board Models Model Details Alpha 2MB Flash (256 x 8KB Pages), 2 boards made for Monte only Beta 2MB Flash (256 x 8KB Pages), 22 boards made and sold to early adopters V2 2MB Flash (256 x 8KB Pages), sector 0x000-0x007 is linked (64KB) V3 First Batch 4MB Flash (512 x 8KB Pages), sector 0x000-0x007 is linked (64KB) V3 Later Batches 4MB Flash (512 x 8KB Pages), sector 0x000-0x007 is segmented (8 x 8KB) V4 First Batches 4MB Flash (512 x 8KB Pages), sector 0x000-0x007 is segmented (8 x 8KB) V4 Lastest Batch (2016-07) 4MB Flash (512 x 8KB Pages), sector 0x000-0x007 is linked (64KB) 2016-09-15 Slide 9
Management Modules ID Page XROM Module IMDB 0x0DF n/a 41CL Image Database (ID, Page, etc) FLDB 0x0DE n/a 41CL Flash Database (YCRC values) YFNZ 0x007 15 41CL Extra Functions (with some memory buffer functions) YFNS 0x062 31 41CL Extra Functions (with some memory buffer functions) YFNP 0x00F 15 41CL Extra Functions Plus (with some image database functions) YFNX 0x00A 15 41CL Extreme Functions (advanced MMU usage) YLIB 0x00B n/a 41CL Library Functions (dynamically loaded page 4 library for YFNX) YFNF 0x167 16 41CL Memory Functions (advanced memory management) 2016-09-15 Slide 10
Management Functions 2016-09-15 Slide 11
RAM Memory Usage Page Work area for doing sector update Page OS location when updating OS flash pages (cont.) 0x810 Page 0 of the flash sector needing an update 0x820 Copy of flash page 0x000 0x811 Page 1 of the flash sector needing an update 0x821 Copy of flash page 0x001 0x812 Page 2 of the flash sector needing an update 0x822 Copy of flash page 0x002 0x813 Page 3 of the flash sector needing an update 0x823 Copy of flash page 0x003 0x814 Page 4 of the flash sector needing an update 0x824 Copy of flash page 0x004 0x815 Page 5 of the flash sector needing an update 0x825 Copy of flash page 0x005 0x816 Page 6 of the flash sector needing an update 0x826 Copy of flash page 0x006 0x817 Page 7 of the flash sector needing an update 0x827 Copy of flash page 0x007 Page 41CL system modules copy 0x830 Copy of Flash:0x007:YFNZ assigned to Port-1L 0x831 Copy of Flash:0x167:YFNF assigned to Port-1U 2016-09-15 Slide 12
ROM Images BASELINE CREATION 2016-09-15 Slide 13
Data Importing Download text/CSV file ◦ 41CL Memory Reference for v3+ board à www.systemyde.com/pdf/mem_ref.txt ◦ 41CL Memory Reference for v2 board à www.systemyde.com/pdf/mem_ref_v2.txt Import text/CSV file in a spreadsheet application ◦ Select tab as the delimiter character ◦ Select MDY for the last column ◦ And add a title line to get ... 2016-09-15 Slide 14
File Management & Data Gathering FIle Management ◦ Finding filenames based on the spreadsheet content column and from the ROM image files ◦ Extracting from a somewhat recent 41CL v4 (Oct 2015) board the missing ROM image files ◦ Getting from the hp41.org and from Monte Dalrymple the other missing ROM image files ◦ Dropping ROM image files that does not pass the YCRC PC test ◦ Moving ROM image files into their respective Flash sector folders (64 for 41CL v3+ / 32 for 41CL v2) ◦ Creating for each flash sector, a modules.txt file, filled with the ROM image filenames in the same order as specified in the mem_ref.txt and mem_ref_v2.txt Data Gathering ◦ Internal ROM image informations, recalculating YCRC values, IMDB & FLDB data dump, etc. ◦ Adding columns: ID2, Name, Rev, Location, Filename, YCRC ROM, V/R, YCRC PC, V/PC, FLDB?, etc. ◦ Merging collected data into new columns 2016-09-15 Slide 15
File Management Sample 2016-09-15 Slide 16
Data Gathering Sample 2016-09-15 Slide 17
Spreadsheet Columns Description 2016-09-15 Slide 18
41CL Update MANUAL PROCESS 2016-09-15 Slide 19
Initialization Command Configuration Command Remap YFNF before doing Flash updates ON Prevent auto power off "167>831" YFNF Flash address to RAM address MMUDIS Deactivate MMU YMCPY Copy YFNZ from V3FLASH:167 to RAM:831 MMUCLR Clear MMU configuration "831-RAM" YFNF RAM address TURBO50 Activate 50x speed up PLUG1U Plug YFNF:RAM:831 to Port:1U (41C page 9) SERINI Initialize serial port Command Activation & validation BAUD48 Set baud rate to 4800 MMUEN Activate MMU configuration Command Remap YFNZ before doing Flash updates CAT 2 Should display: "007>830" YFNZ Flash address to RAM address "-YFNS ??" or "-YFNZ ??" YMCPY Copy YFNZ from FLASH:007 to RAM:830 and "-YFNF ??" "830-RAM" YFNZ RAM address PLUG1L Plug YFNZ:RAM:830 to Port:1L (41C page 8) 2016-09-15 Slide 20
Power Cycle & Cleanup Command Power Cycle Command Cleanup ON Prevent auto power off ON Prevent auto power off Command (optional) MMUDIS Deactivate MMU TURBO50 Activate 50x speed up MMUCLR Clear MMU configuration MMUEN Activate MMU configuration Command (optional) "830000-0000" YFNZ RAM address YMCLR Clear YFNZ:RAM:830 page "831000-0000" YFNF RAM address YMCLR Clear YFNF:RAM:831 page 2016-09-15 Slide 21
Databases Flash Sector Update Command Description PC à Start a terminal session and go to the 41CL update folder (~/temp/41CL_V3+_2016-09-05 on my setup) "0D8>810" Copy FLDB & IMDB sector from FLASH to RAM (format: source address > destination address) YMCPY8 Copy V3FLASH:0D8..0DF to RAM:810..817 "816000-0FFF" FLDB page address (RAM:816) and page length (4KWord) (4K x 16bits word or 8KB) PC à ruby tools/pc41.ru -d /dev/tty.usbserial -w 27_0x0D8-0x0DF/FLDB.ROM [ENTER] (on macOS) PC à [ENTER] (start FLDB.ROM upload) YIMP Download FLDB ROM image through serial port to RAM:816 (start FLDB download) "817000-0FFF" IMDB page address (RAM:817) and page length (4KWord) (4K 16bits word or 8KB) PC à ruby tools/pc41.ru -d /dev/tty.usbserial -w 27_0x0D8-0x0DF/IMDB.ROM [ENTER] (on macOS) PC à [ENTER] (start IMDB.ROM upload) YIMP Download IMDB ROM image through serial port to RAM:817 "0D8000" Outdated databases flash sector address (format: full address) YFERASE Erase V3FLASH:0D8..0DF "810>0D8" Copy updated FLDB & IMDB sector from RAM to V3FLASH (format: source address > destination address) YFWR8 Copy RAM:810..817 to V3FLASH:0D8..0DF "ODF" Updated IMDB:V3FLASH:0DF address FLDB? Display "0DF MATCH" if YCRC .eq. FLDB entry and put the calculated YCRC value in ALPHA 2016-09-15 Slide 22
41CL Update SEMI-AUTOMATIC PROCESS 2016-09-15 Slide 23
Recommend
More recommend