{"id":957,"date":"2020-06-15T09:54:00","date_gmt":"2020-06-15T16:54:00","guid":{"rendered":"https:\/\/www.weinstein.org\/blog\/?p=957"},"modified":"2020-06-07T11:20:05","modified_gmt":"2020-06-07T18:20:05","slug":"ye-olde-tyme-apple-hacking-serial-connection","status":"publish","type":"post","link":"https:\/\/www.weinstein.org\/blog\/index.php\/2020\/06\/ye-olde-tyme-apple-hacking-serial-connection.html","title":{"rendered":"Ye Olde Tyme Apple Hacking: Serial Connection"},"content":{"rendered":"\n<p>In a previous post, <a href=\"https:\/\/www.weinstein.org\/blog\/index.php\/2020\/05\/ye-olde-tyme-apple-hacking.html\">Ye Olde Tyme Apple Hacking<\/a>, I outlined hardware modifications I recently made to a Macintosh LC. Naturally, this brought me in mind of a \u201chack\u201d I wrote up years ago in <a href=\"https:\/\/www.weinstein.org\/blog\/index.php\/2007\/06\/apple-hacking-for-fun-and-profit.html\">Apple Hacking for Fun and Profit<\/a> that outlined how I connected an Apple \/\/c to a Mac Mini to use the \/\/c as a serial terminal.<\/p>\n\n\n\n<p>Since a serial connection and terminal software was also standard fare for classic Macs, I decided to revisit my pervious setup with my Mac LC and a modern-day (2017) iMac.<\/p>\n\n\n\n<p>&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Initial Setup<\/strong><\/h2>\n\n\n\n<p>With regards to hardware, the cabling remains mostly unchanged, a <a href=\"http:\/\/www.usconverters.com\/index.php?main_page=page&amp;id=62&amp;chapter=0\">USB to Serial adaptor<\/a>, a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Null_modem\">null modem<\/a> and a serial cable. The only notable difference is that the LC\u2019s two serial ports (labeled Printer and Modem) are <a href=\"https:\/\/en.wikipedia.org\/wiki\/Mini-DIN_connector\">mini-DIN<\/a> connectors whereas the \/\/c used the larger format <a href=\"https:\/\/en.wikipedia.org\/wiki\/DIN_connector\">DIN connector<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.weinstein.org\/files\/keyspan.jpg\" alt=\"\" width=\"119\" height=\"170\"\/><figcaption><em>USB to Serial Adaptor<\/em><\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.weinstein.org\/files\/null_modem.jpg\" alt=\"\" width=\"300\" height=\"240\"\/><figcaption>RS-232 Null Modem<\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/04\/cables-to-go-6ft-db9-female-to-8-pin-mini-din-serial-rs232-male-adapter-cable-25041-10-1.jpg\" alt=\"\" class=\"wp-image-960\" width=\"240\" height=\"240\" srcset=\"https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/04\/cables-to-go-6ft-db9-female-to-8-pin-mini-din-serial-rs232-male-adapter-cable-25041-10-1.jpg 240w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/04\/cables-to-go-6ft-db9-female-to-8-pin-mini-din-serial-rs232-male-adapter-cable-25041-10-1-150x150.jpg 150w\" sizes=\"(max-width: 240px) 100vw, 240px\" \/><figcaption><em>min-DIN to RS-232 Cable<\/em><\/figcaption><\/figure><\/div>\n\n\n\n<p>For terminal emulation on the Mac LC, I went with <a href=\"http:\/\/dalverson.com\/zterm\/\">ZTerm<\/a>. <strong>ZTerm<\/strong> was a shareware terminal emulator for the Mac originally introduced for<a href=\"https:\/\/en.wikipedia.org\/wiki\/System_7\"> System 7<\/a>. <\/p>\n\n\n\n<p>On the iMac, I\u2019m running macOS 10.15 (<a href=\"https:\/\/en.wikipedia.org\/wiki\/MacOS_Catalina\">Catalina<\/a>) which will only run 64bit applications. I note this because I&#8217;m reusing my Keyspan USB to Serial adaptor from 2007 and the <a href=\"https:\/\/www.tripplite.com\/support\/USA19HS\">software installer for the drivers of the chipset in my adaptor<\/a> haven&#8217;t been updated to run in a 64bit-only computing environment. I was able to solve this apparent impasse by downloading and running <a href=\"https:\/\/www.decisivetactics.com\/products\/serial\/\">Serial 2<\/a>. <strong>Serial<\/strong> was able to recognize and install the proper drivers on the iMac without issue.<\/p>\n\n\n\n<p>In fact, I would recommend purchasing <strong>Serial<\/strong> for a couple of reasons, beyond getting out of this pinch. First, with <strong>Serial<\/strong> running on the iMac and <strong>ZTerm<\/strong> on the LC, it\u2019s a simple matter of typing in a few keys to confirm the serial connection is in working order. Secondly, which I\u2019ll go into detail in the second part of this post, <strong>Serial<\/strong> pairs well with <strong>ZTerm<\/strong> in supporting older file transmission protocols such as <a href=\"https:\/\/en.wikipedia.org\/wiki\/Kermit_(protocol)\">Kermit<\/a> and <a href=\"https:\/\/en.wikipedia.org\/wiki\/ZMODEM\">ZModem<\/a>, thus enabling the transfer of files between the two systems.<\/p>\n\n\n\n<p>&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Perfecting getty<\/strong><\/h2>\n\n\n\n<p>The one thing that always bugged me about my old hack was the use of <a href=\"https:\/\/www.gnu.org\/software\/screen\/\">gnu <strong>screen<\/strong><\/a> to initialize the terminal session. The proper setup should be that the host system listens on the established line for an inbound connection and then initializes the login process when the connection has been established. This is what <a href=\"https:\/\/en.wikipedia.org\/wiki\/Getty_(Unix)\"><strong>getty<\/strong><\/a> is for. What I didn\u2019t consider back then was, how will <strong>getty<\/strong> be managed? For macOS, the answer is <a href=\"https:\/\/en.wikipedia.org\/wiki\/Launchd\"><strong>launchd<\/strong><\/a>.<\/p>\n\n\n\n<p>With that in mind, <a href=\"http:\/\/www.club.cc.cmu.edu\/~mdille3\/doc\/mac_osx_serial_console.html\">here are the configuration settings for <strong>getty<\/strong> and <strong>launchd<\/strong><\/a> on the iMac:&nbsp;<\/p>\n\n\n\n<p>Modify the file <em>\/etc\/gettytab<\/em> to define a terminal type. For example, append <em>:tt=vt10<\/em>0 to the following line in <em>gettytab<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-code term\"><code>2|std.9600|9600-baud::np:sp#9600<\/code><\/pre>\n\n\n\n<p>So now you have&nbsp;something like this:<\/p>\n\n\n\n<pre class=\"wp-block-code term\"><code>2|std.9600|9600-baud:\\\n    :np:sp#9600:tt=vt100:<\/code><\/pre>\n\n\n\n<p>This will tell <strong>getty<\/strong> that a incoming connection labeled <em>std.9600<\/em> should established at 9600 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Baud\">baud<\/a> connection and use the <a href=\"https:\/\/en.wikipedia.org\/wiki\/VT100\">vt100<\/a> terminal settings. <\/p>\n\n\n\n<p>For <strong>launchd<\/strong> create a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Property_list\">property list<\/a> (p-list) file in <em>\/Library\/LaunchDaemons<\/em> with the following:<\/p>\n\n\n\n<pre class=\"wp-block-code term\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?>\n&lt;!DOCTYPE plist PUBLIC \"-\/\/Apple\/\/DTD PLIST 1.0\/\/EN\"\n\"http:\/\/www.apple.com\/DTDs\/PropertyList-1.0.dtd\">\n&lt;plist version=\"1.0\">\n&lt;dict>\n    &lt;key>RunAtLoad&lt;\/key>\n    &lt;true\/>\n    &lt;key>KeepAlive&lt;\/key>\n    &lt;true\/>\n    &lt;key>Label&lt;\/key>\n    &lt;string>serialconsolelc&lt;\/string>\n    &lt;key>ProgramArguments&lt;\/key>\n    &lt;array>\n        &lt;string>\/usr\/libexec\/getty&lt;\/string>\n        &lt;string>std.9600&lt;\/string>\n        &lt;string>tty.USA19H22P1.1&lt;\/string>\n    &lt;\/array>\n&lt;\/dict>\n&lt;\/plist><\/code><\/pre>\n\n\n\n<p>A few bits about the contents of this file:<\/p>\n\n\n\n<ul><li><em>RunAtLoad<\/em> &#8211; Is one of several optional keys that define when a process should run, in this case right after it has been loaded (i.e when macOS is booting)<\/li><li>K<em>eepAlive<\/em> &#8211; Tells <strong>launchd<\/strong> to restart the process when it exits, in this case when a terminal sessions ends<\/li><li><em>Label<\/em> &#8211; Identifies the name of the process to reference itself by, thus it has to be unique<\/li><li><em>ProgramArguments<\/em> &#8211; The heart of what we want, to run <strong>getty<\/strong> and pass it two arguments, the terminal type we defined in<em> <\/em><strong>getty<\/strong>&#8216;s configuration file, <em>std.9600<\/em> and the <em>tty<\/em> device to listen for connection requests <\/li><\/ul>\n\n\n\n<p>Ah, but which device? As I noted over a decade ago:<\/p>\n\n\n\n<pre class=\"wp-block-code term\"><code>$ cd \/dev\n$ ls tty.*<\/code><\/pre>\n\n\n\n<p>Among other <em>tty<\/em> devices on your system, you should see something akin to, <em>tty.USA19H22P1.1 <\/em>That&#8217;s what you want to include as the final <em>ProgramArguments<\/em>. <\/p>\n\n\n\n<p>Alternatively, in <strong>Serial<\/strong>, <em>File -&gt; Open Port<\/em> will also provide a list of available serial devices that can be used. <\/p>\n\n\n\n<p>Now load this setting into <strong>launchd<\/strong> and initiate:<\/p>\n\n\n\n<pre class=\"wp-block-code term\"><code>$ sudo launchctl load -F \/Library\/LaunchDaemons\/serialconsolelc.plist \n$ sudo launchctl start serialconsolelc<\/code><\/pre>\n\n\n\n<p>On the LC start <strong>ZTerm<\/strong>. In <em>Settings -&gt; Connection<\/em> define a new connection with the following settings:<\/p>\n\n\n\n<ul><li>Data Rate: 9600<\/li><li>Data Bits: 8<\/li><li>Stop Bits: 1<\/li><li>Parity: None<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"768\" src=\"https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZModem-Connection-Settings-1024x768.jpeg\" alt=\"\" class=\"wp-image-1035\" srcset=\"https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZModem-Connection-Settings-1024x768.jpeg 1024w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZModem-Connection-Settings-300x225.jpeg 300w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZModem-Connection-Settings-768x576.jpeg 768w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZModem-Connection-Settings.jpeg 1280w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption><em>Defining the Serial Connection Settings in Zterm<\/em><\/figcaption><\/figure><\/div>\n\n\n\n<p>Next, in <em>Settings -&gt; Terminal<\/em> set the terminal emulation to <em>vt100<\/em><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"768\" src=\"https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZTerm-Terminal-Settings-1024x768.jpeg\" alt=\"\" class=\"wp-image-1036\" srcset=\"https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZTerm-Terminal-Settings-1024x768.jpeg 1024w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZTerm-Terminal-Settings-300x225.jpeg 300w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZTerm-Terminal-Settings-768x576.jpeg 768w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZTerm-Terminal-Settings.jpeg 1280w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption><em>Defining the Terminal Settings in Zterm<\/em><\/figcaption><\/figure><\/div>\n\n\n\n<p>Finally, under the Dial menu option, select the new connection. If everything is setup properly, i.e. cabling, communication and terminal settings between the two machines, a login prompt will appear and a new terminal session will begin.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"768\" src=\"https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZTerm-Login-2-1024x768.jpeg\" alt=\"\" class=\"wp-image-1047\" srcset=\"https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZTerm-Login-2-1024x768.jpeg 1024w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZTerm-Login-2-300x225.jpeg 300w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZTerm-Login-2-768x576.jpeg 768w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZTerm-Login-2.jpeg 1280w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption><em>Logging into the iMac from LC via Zterm<\/em><\/figcaption><\/figure><\/div>\n\n\n\n<p>&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Part II: Transferring Files using ZModem<\/h2>\n\n\n\n<p>What motivated me, back in 2007, to initially setup a serial connection between my Apple \/\/c and Mac Mini was <a href=\"http:\/\/ADTPro\"><strong>ADTPro<\/strong><\/a>, a setup that enables the transferring of files between Apple ][ era physical floppy disks and disk images. In other words, it was a method that allowed me to locate and transfer Apple ][ software from the Internet and other connected domains to my isolated \/\/c.<\/p>\n\n\n\n<p>Similarly, with the USB-to-serial cabling in place, I can transfer files between my modern-day iMac and the LC.<\/p>\n\n\n\n<p>First, disable <strong>getty<\/strong>, if enabled to listen for terminal connections:  <\/p>\n\n\n\n<pre class=\"wp-block-code term\"><code>$ sudo launchctl stop serialconsolelc\n$ sudo launchctl unload -F \/Library\/LaunchDaemons\/serialconsolelc.plist\n<\/code><\/pre>\n\n\n\n<p>Next, launch <strong>Serial<\/strong> and <strong>ZTerm<\/strong> on their respective systems. First make sure the file transfer will be binary data, select <em>File -&gt; Transfer Covert -&gt; Binary Data<\/em> in <strong>ZTerm<\/strong>.<\/p>\n\n\n\n<p>Now, the next steps depend on which direction the transfer is to occur. To transfer a file to a modern Mac, in <strong>Serial<\/strong>, after selecting the Port to open select <em>File -&gt; Receive File<\/em>, choose &#8220;ZModem&#8221; from the drop down and click on the &#8220;Receive&#8221; button. <strong>Serial<\/strong> is now waiting for the file transfer to begin.     <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"717\" src=\"https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/Serial-Receive-File-1024x717.png\" alt=\"\" class=\"wp-image-1042\" srcset=\"https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/Serial-Receive-File-1024x717.png 1024w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/Serial-Receive-File-300x210.png 300w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/Serial-Receive-File-768x538.png 768w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/Serial-Receive-File.png 1174w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption><em>Selecting transfer protocol to receive a file in Serial<\/em><\/figcaption><\/figure><\/div>\n\n\n\n<p>To initiate the transfer, in <strong>ZTerm<\/strong>, <em>File -&gt; Send Files -&gt; ZModem<\/em>, select the file and click on &#8220;Add&#8221;. Then click on &#8220;Start&#8221;. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"768\" src=\"https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZTerm-Select-File-1024x768.jpeg\" alt=\"\" class=\"wp-image-1040\" srcset=\"https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZTerm-Select-File-1024x768.jpeg 1024w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZTerm-Select-File-300x225.jpeg 300w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZTerm-Select-File-768x576.jpeg 768w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/ZTerm-Select-File.jpeg 1280w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption><em>Selecting a file to transfer from a classic Mac<\/em><\/figcaption><\/figure><\/div>\n\n\n\n<p>Once the file transfer is complete, Serial will prompt to save the received file.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"717\" src=\"https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/Serial-Save-File-1024x717.png\" alt=\"\" class=\"wp-image-1041\" srcset=\"https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/Serial-Save-File-1024x717.png 1024w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/Serial-Save-File-300x210.png 300w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/Serial-Save-File-768x538.png 768w, https:\/\/www.weinstein.org\/blog\/wp-content\/uploads\/2020\/05\/Serial-Save-File.png 1174w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption><em>Saving the transfer file in Serial<\/em><\/figcaption><\/figure><\/div>\n\n\n\n<p>To transfer from the modern day Mac to a classic Mac, in <strong>Serial<\/strong>, after selecting the proper USB device to connect to, select <em>File -&gt; Send File <\/em>and select the file to transfer. Then, select the &#8216;Transfer Protocol&#8217; <em>ZModem<\/em> from the drop down and click on &#8216;Send&#8217;.<\/p>\n\n\n\n<p>In <strong>ZTerm<\/strong> go to <em>File -&gt; Receive Files -&gt; ZModem<\/em><\/p>\n\n\n\n<p>With that the file transfer will commence.<\/p>\n\n\n\n<p>&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Coda<\/h2>\n\n\n\n<p>Of baud rates, protocols and resources forks.<\/p>\n\n\n\n<p>For the terminal connection, the most subjective option is the connection speed. In the example I provided I selected 9600 baud as I find it to be a pleasant, old-school feel of latency, watching the screen redraw, without being too painful slow. I&#8217;ve also gotten the connection to work as fast as 230400 bps. Your mileage may vary.<\/p>\n\n\n\n<p>For the file transfer protocol I choose <em><a href=\"https:\/\/en.wikipedia.org\/wiki\/ZMODEM\">ZModem<\/a><\/em> and not <em><a href=\"https:\/\/en.wikipedia.org\/wiki\/XMODEM\">XModem<\/a><\/em> or <em><a href=\"https:\/\/en.wikipedia.org\/wiki\/Kermit_(protocol)\">Kermit<\/a><\/em> for a specific reason. Out of the box, that is, with default settings, <em>ZModem<\/em> should provide the fastest transfer rate of the three. (Keep in mind we&#8217;re still talking about 1980s-era transfer speeds.) <em>Kermit<\/em> is more robust in a dynamic environment, but thankful we&#8217;re not dealing with sound modulation and long distances. <em>XModem<\/em> was the most widely-adopted of the three, but can&#8217;t match the speed and robustness of <em>ZModem<\/em>. Since, <strong>ZTerm<\/strong> and <strong>Serial<\/strong> both support <em>ZModem<\/em>, that&#8217;s the protocol I&#8217;ve opted for.        <\/p>\n\n\n\n<p>Finally, a note about resource forks, p-list files and transfer types. In the classic,  pre-OS X days, System OS used a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Resource_fork\">resource <\/a><font color=\"#007fac\"><span style=\"caret-color: rgb(0, 127, 172);\"><u>fork<\/u><\/span><\/font> to store metadata along side a data fork. Among other information stored in the resource fork was the file type. In this way the operating system knew what action to take when a user double-clicked on the file.<\/p>\n\n\n\n<p>Thus, the question in the pre-OS X days was, how to preserve the resource fork when transferring files? This is where the transfer convert option in <strong>ZTerm<\/strong> comes into play. Options here include, <em>text<\/em>, <em>binary<\/em> and <em>Macbinary<\/em>. <a href=\"https:\/\/en.wikipedia.org\/wiki\/MacBinary\">MacBinary<\/a> was one solution for preserving the two file forks in one, resulting in a file that was suitable for transmission.<\/p>\n\n\n\n<p>However, not all operating systems adopted the resource fork convention. Recall, for example, that Windows has always used a file extension to define a file type. As with Windows, our modern OS X system don&#8217;t use resource forks either. For macOS this is the job of p-lists (property list). <\/p>\n\n\n\n<p>What does this mean for transferring from a classic Mac to a modern system? A couple of things. One, in terms of settings to use in <strong>ZTerm<\/strong>, set the transfer convert to <em>binary<\/em> and not <em>Macbinary<\/em>.<\/p>\n\n\n\n<p>Two, for transferring non-executable files to a modern system, add the missing file extension in order to match the file to an application.. (For example, for the screenshots in this blog, I transferred the files and then added <em>.pict<\/em> to the filename so I could open them in a modern graphics editor). <\/p>\n\n\n\n<p>For transferring non-executable files to a classic system, the resource file will be missing. This means the first time trying to open the file, drag it over its corresponding application (or open it from within the application itself) and save it to create the proper resource fork. <\/p>\n\n\n\n<p>Three, when using a non-classic Mac as an intermediary, such as transferring a 68k application from an online repository, make sure the application has been archived as a .<em>sit<\/em> or .<em>sea<\/em> as these data compression types were designed to preserve resource forks. <\/p>\n\n\n\n<p>These three steps will help quickly navigate managing resource fork issues. Alternatively you can dive into using an application like <a href=\"https:\/\/en.wikipedia.org\/wiki\/ResEdit\">ResEdit<\/a> or learn all the<a href=\"https:\/\/thehouseofmoth.com\/how-to-properly-preserve-classic-mac-data\/\"> different CPU architecture\/operating system combinations of StuffIt<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Revisiting an old \u201chack\u201d of setting up a physical serial terminal to a modern-day Mac, perfecting the setup and transferring files between modern and classic Macs via the USB-to-serial connection. <\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[46,47],"tags":[48,57,49,374,376,80,375,378,377],"_links":{"self":[{"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/posts\/957"}],"collection":[{"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=957"}],"version-history":[{"count":92,"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/posts\/957\/revisions"}],"predecessor-version":[{"id":1085,"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/posts\/957\/revisions\/1085"}],"wp:attachment":[{"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=957"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=957"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.weinstein.org\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=957"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}