/
/
usr
/
libexec
/
mc
/
extfs.d
EDITOR
/usr/libexec/mc/extfs.d/hp48+
SAVE
CLOSE
#!/usr/bin/sh # # Written by Christofer Edvardsen <ce@earthling.net>, Feb 1998 # # This script makes it possible to view and copy files to/from a hp48 # (tested with a HP48G and the emulator x48) # # To use the hp48 external filesystem: # - read the relevant parts of your HP48 manual # - install kermit # - connect the HP48 to your computer or start x48 # - below change the line which reflects the serial device you use # - configure your HP48 (<left shift> - i/o - iopar): # port: wire # baud: 9600 # transfer format: binary (fast transfers) or # ascii (editable on the pc) # - start the server on the HP48: <left shift> - i/o - srvr - serve # or the shortcut <right shift> - <right arrow> # - on MC's commandline enter "cd hp48://" # # Make sure you have kermit installed and that it's using the right serial # device by changing /dev/ttyXX on the next line AWK=gawk KERMIT=${MC_TEST_EXTFS_LIST_CMD:-"kermit -l /dev/ttyS1 -b 9600"} NOW=`date +"%m-%d-%Y %H:%M"` hp48_cmd() { $KERMIT -C "SET EXIT WARNING OFF,REMOTE $1,QUIT" } hp48_cd() { (echo SET EXIT WARNING OFF;echo REMOTE HOST HOME for HP48_DIR in `echo "$1" | tr '/' ' '`;do if [ "x$HP48_DIR" != "x." ];then echo REMOTE HOST "$HP48_DIR"; fi done echo QUIT)| $KERMIT -B >/dev/null } # # Parses the reply to the DIRECTORY command. # # Here's an example reply (taken from [1][2]): # # { HOME } 105617 # STRAY 185.5 Directory 29225 # YEN 30.5 Program 53391 # JYTLIGHT 21848.5 String 62692 # IOPAR 37.5 List 61074 # # The meaning of the fields (according to [3][4]): # # { Current_directory } Free_space # Object_name Object_size_bytes Object_type Object_CRC # ... # # [1] http://newarea48.tripod.com/kermit.html # [2] http://www.hpmuseum.org/forum/thread-4684.html # [3] https://groups.google.com/d/msg/comp.sys.hp48/bYTCu9K3k20/YWQfF--W3EEJ # [4] http://www.columbia.edu/kermit/hp48.html (also has a link to the HP's user manual). # hp48_parser() { HP48_DIRS= read -r INPUT while [ "x$INPUT" != "xEOF" ] do set -- $INPUT obj_name=$1 obj_size=$2 obj_type=$3 obj_size=`echo $obj_size | $AWK '{ print int($0) }'` # Truncates floats to ints; anything else to "0". if [ "$obj_size" != "0" ]; then # Skips the 1st reply line (purportedly there aren't zero-size files b/c, according to resource [4], the size is "including name"). case "$obj_type" in Directory) HP48_DIRS="$HP48_DIRS $obj_name" printf "%crwxr-xr-x 1 %-8d %-8d %8d %s %s\n" 'd' \ 0 0 $obj_size "$NOW" "$HP48_CDIR/$obj_name" ;; *) printf "%crw-r--r-- 1 %-8d %-8d %8d %s %s\n" '-' \ 0 0 $obj_size "$NOW" "$HP48_CDIR/$obj_name" ;; esac fi read -r INPUT done for HP48_DIR in $HP48_DIRS; do HP48_PDIR="$HP48_CDIR" HP48_CDIR="$HP48_CDIR/$HP48_DIR"; hp48_cmd "HOST $HP48_DIR" >/dev/null hp48_list HP48_CDIR="$HP48_PDIR"; hp48_cmd "HOST UPDIR" >/dev/null done } hp48_list() { # It's hard to see why this "EOF" thing is needed. The loop above can be changed to "while read -r obj_name ...". @TODO. { hp48_cmd "DIRECTORY"; echo; echo EOF; } | hp48_parser } # override any locale for dates LC_ALL=C export LC_ALL case "$1" in list) HP48_CDIR= hp48_cmd "HOST HOME" >/dev/null hp48_list exit 0;; copyout) cd "`dirname "$4"`" hp48_cd "`dirname "$3"`" $KERMIT -B -g "`basename "$3"`" -a "$4" >/dev/null exit 0;; copyin) cd "`dirname "$4"`" hp48_cd "`dirname "$3"`" $KERMIT -B -s "$4" -a "`basename "$3"`" >/dev/null exit 0;; esac exit 1
Ln 1, Col 1
FORMAT
WRAP
SAVE FILE
ONLINE
extfs.d
36 items
20:46:36
TERMINAL FM
×
NAVIGATION
Root
Parent Dir
Refresh
ACTIONS
New Folder
New File
Upload Files
New Symlink
SELECTION
Select All
Deselect
Delete Selected
NEW FOLDER
FOLDER NAME
NEW FILE
FILE NAME
UPLOAD FILES
Click to browse or drag & drop files
No files selected
RENAME
CURRENT NAME
NEW NAME
COPY FILE
SOURCE
DESTINATION NAME
CHMOD
FILE / FOLDER
CURRENT PERMISSIONS
NEW MODE (octal)
755 (rwxr-xr-x)
644 (rw-r--r--)
777 (rwxrwxrwx)
600 (rw-------)
444 (r--r--r--)
CONFIRM DELETE
You are about to delete:
This action is irreversible. All contents will be permanently removed.
NEW SYMLINK
LINK TARGET (path)
LINK NAME
Edit
Preview
Download
Rename
Copy
Chmod
Delete