3 # Written by Christofer Edvardsen <ce@earthling.net>, Feb 1998
5 # This script makes it possible to view and copy files to/from a hp48
6 # (tested with a HP48G and the emulator x48)
8 # To use the hp48 external filesystem:
9 # - read the relevant parts of your HP48 manual
11 # - connect the HP48 to your computer or start x48
12 # - below change the line which reflects the serial device you use
13 # - configure your HP48 (<left shift> - i/o - iopar):
16 # transfer format: binary (fast transfers) or
17 # ascii (editable on the pc)
18 # - start the server on the HP48: <left shift> - i/o - srvr - serve
19 # or the shortcut <right shift> - <right arrow>
20 # - on MC's commandline enter "cd hp48://"
22 # Make sure you have kermit installed and that it's using the right serial
23 # device by changing /dev/ttyXX on the next line
25 KERMIT
="kermit -l /dev/ttyS1 -b 9600"
29 $KERMIT -C "SET EXIT WARNING OFF,REMOTE $1,QUIT"
34 (echo SET EXIT WARNING OFF
;echo REMOTE HOST HOME
35 for HP48_DIR
in `echo "$1" | tr '/' ' '`;do
36 if [ "x$HP48_DIR" != "x." ];then echo REMOTE HOST
"$HP48_DIR"; fi
38 echo QUIT
)|
$KERMIT -B >/dev
/null
48 printf "%d" "$2" 2>/dev
/null
52 # Parses the reply to the DIRECTORY command.
54 # Here's an example reply (taken from [1][2]):
57 # STRAY 185.5 Directory 29225
58 # YEN 30.5 Program 53391
59 # JYTLIGHT 21848.5 String 62692
60 # IOPAR 37.5 List 61074
62 # The meaning of the fields (according to [3][4]):
64 # { Current_directory } Free_space
65 # Object_name Object_size_bytes Object_type Object_CRC
68 # [1] http://newarea48.tripod.com/kermit.html
69 # [2] http://www.hpmuseum.org/forum/thread-4684.html
70 # [3] https://groups.google.com/d/msg/comp.sys.hp48/bYTCu9K3k20/YWQfF--W3EEJ
71 # [4] http://www.columbia.edu/kermit/hp48.html (also has a link to the HP's user manual).
77 while [ "x$INPUT" != "xEOF" ]
79 case `echo "$INPUT" | $AWK '{if (int($2)) if ($3 == "Directory") print "dir";else print "file"}'` in
80 dir
) HP48_DIRS
="$HP48_DIRS `hp48_retdir $INPUT`"
81 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`";;
82 file) printf "%crw-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`";;
86 for HP48_DIR
in $HP48_DIRS;
88 HP48_PDIR
="$HP48_CDIR"
89 HP48_CDIR
="$HP48_CDIR/$HP48_DIR"; hp48_cmd
"HOST $HP48_DIR" >/dev
/null
91 HP48_CDIR
="$HP48_PDIR"; hp48_cmd
"HOST UPDIR" >/dev
/null
97 { hp48_cmd
"DIRECTORY"; echo; echo EOF
; } | hp48_parser
100 # override any locale for dates
106 hp48_cmd
"HOST HOME" >/dev
/null
111 hp48_cd
"`dirname "$3"`"
112 $KERMIT -B -g "`basename "$3"`" -a "$4" >/dev
/null
116 hp48_cd
"`dirname "$3"`"
117 $KERMIT -B -s "$4" -a "`basename "$3"`" >/dev
/null