(11-23-2017 01:03 PM)Neve Wrote: What is the best way to transfer programs to and from the HP41CL using the serial port, and a Macintosh (no PC, no Linux).
By using the clupdate program of course
Extract from the clupdate-1.0.0-readme.txt included in the clupdate-1.0.0.zip file.
Code:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
H) loading UPDAT-2B.ROM ROM image into the 41CL /////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
This section will show you how to load the UPDAT-1G.ROM image into the 41CL
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
1) you must find which communication port your 41CL serial cable is connected to
2) once found, replace the SERIAL_PORT tag by its appropriate value.
Windows: find your serial port name with DeviceManager and use that name instead of the SERIAL_PORT tag. (ex.: COM4)
Linux..: find your serial port name in /dev folder and use that name instead of the SERIAL_PORT tag. (ex.: /dev/ttyUSB0)
macOS..: find your serial port name in /dev folder and use that name instead of the SERIAL_PORT tag. (ex.: /dev/tty.usbserial)
3) start a shell (aka command line)
4) go to the working folder
5) load the update ROM image into the 41CL
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Type_on_CL: MMUDIS // disable 41CL memory management unit
Type_on_CL: MMUCLR // clear 41CL memory management unit configuration
Type_on_CL: "YFNX" // enter in ALPHA the 41CL Extreme Functions rom image ID
Type_on_CL: PLUG1L // plug it to the lower address of port 1 (page 8)
Type_on_CL: MMUEN // enable 41CL memory management unit
Type_on_CL: SERINI // initialize the serial port
Type_on_CL: BAUD then 48 // set communication speed to 4800 bauds
Type_on_CL: ON // (optional) deactivate calculator sleep mode
Type_on_CL: CF 26 // (optional) deactivate calculator sound
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Type_on_CL: "80F000-0FFF" // Physical destination address 0x80F000 and length 0x0FFF in RAM where the ROM image will be loaded
Type_on_CL: [XEQ][ALPHA]YIMP // Here we need to prepare the next function by pressing [XEQ] [ALPHA] [Y] [I] [M] [P]
Type_on_PC: java -jar clupdate-1-0-0.jar --upload UPDAT-2B.ROM SERIAL_PORT 4800 [ENTER] // WARNING: see SERIAL_PORT comment above
Disp_on_PC: HH:MM:SS --upload [fileName: UPDAT-2B.ROM] [portName: SERIAL_PORT] [baudRate: 4800]
Disp_on_PC: HH:MM:SS File UPDAT-2B.ROM loading ... done [YCRC=0x158BFD51 Rev:2017-08-14]
Disp_on_PC: HH:MM:SS Serial SERIAL_PORT opened.
Disp_on_PC: HH:MM:SS Sleeping 5 seconds before starting file transfer
Type_on_CL: [ALPHA] // Pressing [ALPHA] within the time allowed, executes the YIMP function and start the CL serial importation
Disp_on_CL: "RECEIVING" // see the clupdate execution result below
Disp_on_PC: HH:MM:SS Sending 8192 = 8192 bytes sent
Disp_on_PC: HH:MM:SS Serial /dev/tty.usbserial closed.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Type_on_CL: "80F" // Selecting RAM page 0x80F000
Type_on_CL: YCRC // Validating CRC of the RAM page
Disp_on_CL: WORKING
Disp_on_CL: 158BFD51 // Expecting YCRC=0x158BFD51 for UPDAT-2B.ROM
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Type_on_CL: "-80F 9" // Map UPDAT-2B.ROM image at RAM physical address 0x80F000 to port address 9
Type_on_CL: PPLUG // Activate the virtual module
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Type_on_CL: CAT 2 // Validating configuration
Disp_on_CL: -TIME 3A // Time module
Disp_on_CL: -CL TIME // CL Time module
Disp_on_CL: -YFNX 2C // CL Extreme Functions module - MMU functions
Disp_on_CL: -SYS FNS // CL Extreme Functions module - System functions
Disp_on_CL: -SER FNS // CL Extreme Functions module - Serial functions
Disp_on_CL: -MISC FNS // CL Extreme Functions module - Miscellaneous functions
Disp_on_CL: UPDAT 2B // CL Update Functions module
Disp_on_CL: -EXT FCN 3B // Extended Functions module
Disp_on_CL: -CL EXT FCN // CL Extended Functions module
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Assuming YFNX is mapped and activated, the minimum do to is ...
Code:
calculator: SERINI
calculator: BAUD then 48
calculator: "820000-0FFF" // physical destination address and length in RAM where the ROM image will be loaded, you can choose another address if you want
calculator: [XEQ][ALPHA]YIMP // not pressing the last [ALPHA] will leave the 41CL in wait state
computer..: java -jar clupdate-1.0.0.jar --upload YOUR_ROM_FILENAME /dev/tty.usbserial 4800 [RETURN]
// wait until you see -> HH:MM:SS Sleeping 5 seconds before starting file transfer
calculator: [ALPHA] // this activate the YIMP function, you should see "RECEIVING" on the LCD
calculator: "820" // physical address to CRC
calculator: YCRC // calculating the CRC of the module, you should see the same CRC displayed on the computer of the file transfered
calculator: "-820 9" // physical address and port to activate
calculator: PPLUG // activating the module
Sylvain
edit: typo