News:

2026.08.23 The "Files" area is now visible to guests/spiders

Main Menu

Moving the many source files to the Lisa

Started by sigma7, July 20, 2025, 01:24:09 PM

Previous topic - Next topic

sigma7

Quote from: snua12 on August 12, 2025, 04:19:39 PM
Has anyone seen RS-232 errors...

I've encountered one error 643 in transferring prolly 1.5 times the whole set of files (the set as recommended by Alex); it was not accompanied by the level 7 interrupt.

Since the problem you've experienced is only semi-repeatable (AFAICT), I wonder if it is an interference issue rather than a configuration or data pattern issue.

I'm using quite long cables, maybe 30' overall composed of a couple long ones strung together, a re-wired 3" null-modem adapter, and a DB25-DE9 adapter; not much for 80's RS-232, but for a USB adapter, perhaps not typical usage.

All the shields are connected, and I have all the equipment power connected to a common ground, as well.

If you have a voltmeter, you might disconnect the serial cable and check the AC voltage between the shields, and/or the grounds (pin 7 of the DB25) to see if the two ends of the link are fighting a ground differential.

Warning: Memory errors found. ECC non-functional. Verify comments if accuracy is important to you.

snua12

I finally managed to transfer all the files successfully!

The issue turned out to be hardware-related: due to past battery leakage, the G (enable) pin of the AM26LS32ACN was not grounded correctly. After fixing that, I also built a short cable according to the pinout http://sigmasevensystems.com/blumanual.html


Lisa (DB25M)      PC (DE9F)
  2   Tx  > Rx      2
  3   Rx  < Tx      3
  7   Gnd           5
  6   DSR < RTS     7
20   DTR > CTS     8


Finally, I had to tweak the Python transfer script to use CTS/RTS flow control instead of DSR/DTR.


diff --git a/scripts/lisa_serial_transfer.py b/scripts/lisa_serial_transfer.py
index 6a2b177..53fb4c1 100644
--- a/scripts/lisa_serial_transfer.py
+++ b/scripts/lisa_serial_transfer.py
@@ -99,7 +99,7 @@ def send_single_file(file_path, filename):
             while (byte := source_file.read(1)): # Read the file byte by byte.
                 state_start = time.time()
                 # Flow control in Pyserial is broken, so we have to check DSR manually. If it's low, we need to block until the Lisa's done processing data.
-                while not lisa.dsr:
+                while not lisa.cts:
                     # So say that we're waiting for the Lisa in the progress bar.
                     print_progress_bar(filename, total_files - len(path_list), total_files, source_file.tell(), os.path.getsize(file_path), size, start_time, True)
                     if time.time() - state_start > buffer_timeout: # And if it's not done processing in buffer_timeout seconds, print a warning.
@@ -138,7 +138,7 @@ def send_single_file(file_path, filename):
         print_progress_bar(filename, total_files - len(path_list), total_files, 0, 1, size, time.time(), True)
         time.sleep(2)
         state_start = time.time()
-        while not lisa.dsr: # Wait for the Lisa to be ready for our 'end of transfer' commands, just like above.
+        while not lisa.cts: # Wait for the Lisa to be ready for our 'end of transfer' commands, just like above.
             if time.time() - state_start > buffer_timeout:
                 print('WARNING: Lisa is taking forever to empty its buffer, probably hung!')
                 log_file.write('\nWARNING: Lisa is taking forever to empty its buffer, probably hung! ')
@@ -181,7 +181,7 @@ def send_single_file(file_path, filename):
     # This code executes at the end of a file transfer; it's very similar to the code from the Except above.
     # lisa.flush()
     state_start = time.time()
-    while not lisa.dsr: # Wait for the Lisa to finish processing its data buffer.
+    while not lisa.cts: # Wait for the Lisa to finish processing its data buffer.
         print_progress_bar(filename, total_files - len(path_list), total_files, os.path.getsize(file_path), os.path.getsize(file_path), size, start_time, True)
         if time.time() - state_start > buffer_timeout:
             print('\nWARNING: Lisa is taking forever to empty its buffer, probably hung!')
@@ -259,7 +259,7 @@ sys.stdout.flush()
input('Run the EXEC file ALEX/TRANSFER.TEXT on your Lisa, and hit RETURN on this computer once the Lisa screen goes blank...')

try: # Attempt to connect to the Lisa over serial, and exit with an error if we fail.
-    lisa = serial.Serial(port=sys.argv[1], baudrate=28800, bytesize=8, dsrdtr=True, timeout=1)
+    lisa = serial.Serial(port=sys.argv[1], baudrate=28800, bytesize=8, rtscts=True, timeout=1)


With these changes in place, the transfers seem to be now reliable.

Thanks again to everyone here for the advice and pointers — it definitely set me on the right track.

AlexTheCat123

Glad to hear it! Be sure to make a backup of your disk now before going any further, and let us know if you have any issues with actually building everything.

TorZidan


In another thread https://lisalist2.com/index.php?topic=854.msg6689#msg6689 I posted my python-based tool for transferring files from a PC to a ProFile disk image.

One great application of it is to "move" the Lisa Office System source files onto a ProFile disk image,  so that you can compile them on a real Lisa or in LisaEm.

The shell script at https://github.com/TorZidan/LisaFileSystemTool/tree/main/LisaSourceCompilation does exactly that. It's  as-simple as downloading the Lisa sources zip file from https://info.computerhistory.org/apple-lisa-code and running the shell script on it.

bmwcyclist

I have not read the source download page details in a while, does anyone know if we are allowed to share the raw files (such as in a pre-made profile image), or does everyone have to get their own copy directly?

Using my LISA for writing blogs and other work projects, and for fun and games at home.
Visit my shares on GlobalTalk! LISAGamingZone
Check out the NEW Lisa Software! https://github.com/GyroPilot
telnet theapplelisabbs.duckdns.org 1983

stepleton

Unless something has changed, you're not allowed to share a pre-made ProFile; you have to make your own. Otherwise Alex could have shared the image from the initial effort to compile the OS.

bmwcyclist

Quote from: stepleton on <strong>Today</strong> at 12:58:28 PMUnless something has changed, you're not allowed to share a pre-made ProFile; you have to make your own. Otherwise Alex could have shared the image from the initial effort to compile the OS.

OK, thanks I knew you couldn't share something already compiled but I was wondering if maybe a "ready to compile" image would be legit.

Even with the effort, we are so very lucky to have the code.

Using my LISA for writing blogs and other work projects, and for fun and games at home.
Visit my shares on GlobalTalk! LISAGamingZone
Check out the NEW Lisa Software! https://github.com/GyroPilot
telnet theapplelisabbs.duckdns.org 1983