1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #!/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=@AWK@
- KERMIT="kermit -l /dev/ttyS1 -b 9600"
- 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
- }
- hp48_retdir()
- {
- echo "$1"
- }
- hp48_retsize()
- {
- printf "%d" "$2" 2>/dev/null
- }
- hp48_parser()
- {
- HP48_DIRS=
- read -r INPUT
- while [ "x$INPUT" != "xEOF" ]
- do
- case `echo "$INPUT" | $AWK '{if (int($2)) if ($3 == "Directory") print "dir";else print "file"}'` in
- dir) HP48_DIRS="$HP48_DIRS `hp48_retdir \"$INPUT\"`"
- printf "drwxr-xr-x 1 %-8d %-8d %8d %s %s\n" 0 0 `hp48_retsize "$INPUT"` "`date +\"%b %d %Y %k:%M\"`" "$HP48_CDIR/`hp48_retdir \"$INPUT\"`";;
- file) printf "-rw-r--r-- 1 %-8d %-8d %8d %s %s\n" 0 0 `hp48_retsize "$INPUT"` "`date +\"%b %d %Y %k:%M\"`" "$HP48_CDIR/`hp48_retdir \"$INPUT\"`";;
- esac
- 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()
- {
- { 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
|