diff --git a/upy.py b/upy.py
index 4a33a96ae5b585eda936e5226cf0b146d9352ce3..3b0365fc1e54d86e89cadc70a3785a0c47dcd547 100755
--- a/upy.py
+++ b/upy.py
@@ -3,8 +3,11 @@
 # upy.py: raw REPL tool
 #    udp.py port ls
 #    udp.py port run file.py
+#       runs in RAM
 #    udp.py port put file.py
 #       use single quotes for triple quote strings
+#    udp.py port put file.py code.py
+#       to rename file; code.py to run at boot
 #    udp.py port get file.py
 #    udp.py port rm file.py
 #
@@ -28,6 +31,7 @@ s.write(b'\x01') # ^a enter raw mode
 while (s.in_waiting > 0): # clear buffer
    s.read()
 if (sys.argv[2] == 'run'):
+   s.write(b'\x03') # ^c interrupt
    file = open(sys.argv[3],'r')
    str = file.read()
    file.close()
@@ -38,6 +42,7 @@ if (sys.argv[2] == 'run'):
    while (True): # show output
       sys.stdout.write(s.read().decode('utf-8'))
 elif (sys.argv[2] == 'ls'):
+   s.write(b'\x03') # ^c interrupt
    s.write(b'import os\n')
    s.write(b'files = os.listdir()\n')
    s.write(b'print("")\n')
@@ -49,11 +54,15 @@ elif (sys.argv[2] == 'ls'):
       sys.stdout.write(s.read().decode('utf-8'))
    print('')
 elif (sys.argv[2] == 'put'):
+   s.write(b'\x03') # ^c interrupt
    file = open(sys.argv[3],'r')
    str = file.read()
    file.close()
    s.write(bytes(f'str = """{str}"""\n','ascii'))
-   s.write(bytes(f'file = open("{sys.argv[3]}","w")\n','ascii'))
+   if (len(sys.argv) == 4):
+      s.write(bytes(f'file = open("{sys.argv[3]}","w")\n','ascii'))
+   elif (len(sys.argv) == 5):
+      s.write(bytes(f'file = open("{sys.argv[4]}","w")\n','ascii'))
    s.write(b'file.write(str)\n')
    s.write(b'file.close()\n')
    s.write(b'del str\n')
@@ -63,6 +72,7 @@ elif (sys.argv[2] == 'put'):
       sys.stdout.write(s.read().decode('utf-8'))
    print('')
 elif (sys.argv[2] == 'get'):
+   s.write(b'\x03') # ^c interrupt
    s.write(bytes(f'file = open("{sys.argv[3]}","r")\n','ascii'))
    s.write(b'print(file.read())\n')
    s.write(b'file.close()\n')
@@ -72,6 +82,7 @@ elif (sys.argv[2] == 'get'):
       sys.stdout.write(s.read().decode('utf-8'))
    print('')
 elif (sys.argv[2] == 'rm'):
+   s.write(b'\x03') # ^c interrupt
    s.write(b'import os\n')
    s.write(bytes(f'os.remove("{sys.argv[3]}")\n','ascii'))
    s.write(b'\x04') # ^d exit raw mode and execute