tag:blogger.com,1999:blog-12158308877956019322024-03-14T03:54:55.757-04:00Jeff Tranter's BlogSci-Fi and Hi-FiJeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.comBlogger286125tag:blogger.com,1999:blog-1215830887795601932.post-26436122777735907872023-02-26T12:32:00.001-05:002023-02-26T12:40:04.460-05:00Letters from India Book Project<p><br /></p><p>This post is a little different - it is not about vintage radios, test equipment, or retrocomputing. Rather, it is about a book project I recently completed.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMAy5UQIlPjI6TgQC7qSamBs2rTyXlcBgKyfoIy11n2cxV--lh-2n3icHg9_ZcAwJSVbdB9HAiljiRo5fcSn7MKWj3cPlgmZOw1CGcwSvNiL0acBChdVXbwsFmjy6Hzm7VIFmWiD5TfO1WLhGQ_oW3686scm9dxI5ANuQLyQSTBunKOHwUQEEv9BOo/s640/image1691.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="441" data-original-width="640" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMAy5UQIlPjI6TgQC7qSamBs2rTyXlcBgKyfoIy11n2cxV--lh-2n3icHg9_ZcAwJSVbdB9HAiljiRo5fcSn7MKWj3cPlgmZOw1CGcwSvNiL0acBChdVXbwsFmjy6Hzm7VIFmWiD5TfO1WLhGQ_oW3686scm9dxI5ANuQLyQSTBunKOHwUQEEv9BOo/w275-h190/image1691.jpg" width="275" /></a></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;">I was part of a middle-class Canadian family of five living in the greater Toronto area of Ontario, Canada. Both my parents were teachers. Around 1969 my father had the opportunity to take a job in India, and the entire family ended up moving and living there for two years from 1970 to 1972.</span></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD_6E6_u8eG69QyX4b_0HC9l462uh0d_xGhKPY2iTLttf2cQXWeVk4uehM-SK0j6c2xwCw-3P9nMl_op6dbD9qcvSMeWftD-cgG2ltwH_4GHauM1KDuZGY-lODuIQfnmoewc6wQi6KCbuR-TOepdSx7MGtavxn1JxI4T8iOhmpB7Q7KO4zFrMmB5Nh/s1200/lp-best-of-fifties_sixties.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1189" data-original-width="1200" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD_6E6_u8eG69QyX4b_0HC9l462uh0d_xGhKPY2iTLttf2cQXWeVk4uehM-SK0j6c2xwCw-3P9nMl_op6dbD9qcvSMeWftD-cgG2ltwH_4GHauM1KDuZGY-lODuIQfnmoewc6wQi6KCbuR-TOepdSx7MGtavxn1JxI4T8iOhmpB7Q7KO4zFrMmB5Nh/w182-h180/lp-best-of-fifties_sixties.jpg" width="182" /></a></div><br /><p>The sixties had just ended and it was a time of rapid social change, interest in other cultures, and a desire to improve the world. Canada had developed a nuclear power technology that it was exporting to other countries. An agreement was reached with the Indian government to have Canada assist in constructing nuclear power generating plants in India, providing much-needed electrical power to developing areas of the country.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMHEgPYq7LaEPHYhISVDF3FH9_A0uClnAkhXbpdgBvKqxwrHaT9SEN6GLNo4RhTg0-aQegAEjLCPa4EgZ1WyRw-EDwCrp8Usb9KJJpMdqUlj2k2c6Ucs2fxmG6XVydbJ_DLpIa-JFNmq-9gmjknXUsZoSivdWAYJ1k8Ycn-OsPirnxoI7hFIbKWKIQ/s752/candu_graphic_(web).gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="267" data-original-width="752" height="114" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMHEgPYq7LaEPHYhISVDF3FH9_A0uClnAkhXbpdgBvKqxwrHaT9SEN6GLNo4RhTg0-aQegAEjLCPa4EgZ1WyRw-EDwCrp8Usb9KJJpMdqUlj2k2c6Ucs2fxmG6XVydbJ_DLpIa-JFNmq-9gmjknXUsZoSivdWAYJ1k8Ycn-OsPirnxoI7hFIbKWKIQ/s320/candu_graphic_(web).gif" width="320" /></a></div><p>Building nuclear power stations is a long and complex process and you can imagine the additional challenges of replicating Canadian-designed generating stations in India. The goal of the Rajasthan Atomic Power Project was to build several reactors in the north-western Indian state of Rajasthan, near the city of Kota, adjacent to the village (now a city) of Rawatbhata.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5VvFN_b2G5nbLxWZZZ9fjntfPp9CvmFChRfHpeCIqZkvSZ4GgxdVvYQSDwNKthO3Ba2_RMIf_vvCbzsCjQKzZLl5nXrvNRyFTJ3WNB4_Dw0Po3EOdu88WJ2dAAPJwh97ZVUyu9mv-g58RFVOE1ev7bkY7EJTvvcBTe90GZVU3IOGGGn_GS-nTzeu3/s1608/Screenshot%20from%202022-11-13%2018-44-08.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="818" data-original-width="1608" height="219" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5VvFN_b2G5nbLxWZZZ9fjntfPp9CvmFChRfHpeCIqZkvSZ4GgxdVvYQSDwNKthO3Ba2_RMIf_vvCbzsCjQKzZLl5nXrvNRyFTJ3WNB4_Dw0Po3EOdu88WJ2dAAPJwh97ZVUyu9mv-g58RFVOE1ev7bkY7EJTvvcBTe90GZVU3IOGGGn_GS-nTzeu3/w430-h219/Screenshot%20from%202022-11-13%2018-44-08.png" width="430" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYSLr5Fe4b9BLEghRPur-JlO4RiqurohvMviMFYj55yTbAxm4F1up0kHE4lAkYqVqzbTdvkEwaH9oIPPMkQpO_fS_2_oOAVE_TiSNmMVAwdXYxd8gPl7Mqp481f2tLJJfUvFzOswKYDCmwC91Th6S8yX9UstR0vpyc_FWDvdgVCG5H6eWLjlBS5-6x/s1608/Screenshot%20from%202022-11-13%2018-44-39.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="827" data-original-width="1608" height="220" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYSLr5Fe4b9BLEghRPur-JlO4RiqurohvMviMFYj55yTbAxm4F1up0kHE4lAkYqVqzbTdvkEwaH9oIPPMkQpO_fS_2_oOAVE_TiSNmMVAwdXYxd8gPl7Mqp481f2tLJJfUvFzOswKYDCmwC91Th6S8yX9UstR0vpyc_FWDvdgVCG5H6eWLjlBS5-6x/w428-h220/Screenshot%20from%202022-11-13%2018-44-39.png" width="428" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;">To assist in construction of the facility, Canada sent several dozen Canadian engineers and technicians to live and work on the site. This involved building a small community with suitable homes, recreation facilities, and a school for the Canadian families. My father was hired as the head teacher (one of two </span><span style="text-align: left;">full-time teachers) for the school for the Canadian children.</span></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><img border="0" data-original-height="3576" data-original-width="5206" height="220" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSa01dCjIY8mX9G0iDsEsYSmSvg3oAchu_E-RHcFhBTtczvVOvFB-DEeSPGB_UH4f56_a8_0JCjFPmuyhoauIAFjpPiZmBEKtyXjFClSms4qwvGq1fLfu-XvVoxZ9e-v2t2dPDDoSeAP3vmp9mrr3x6qzrZ68NJvvTTSbyFuQmoKrNVNllzw5DR0us/s320/Our%20House%20on%20the%20Hill.jpg" width="320" /><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;">We spent two years living there, during which time we did considerable </span><span style="text-align: left;">travelling in our Volkswagen camping van as well as by train, </span><span style="text-align: left;">airplane, ship, horseback, and motorcycle. </span></div></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH-I7IsvO70KqGfCEdqFSDNJ52aijZsMahA3WwzrizdnEBUN7Snw8lDBep7vTWPLQn_8hY9j8k7jXfzcVGAufgluLGLUnc_JNi9HZLOk5Tr4Hkj8Ro0vxc2Cg8DOVBMXId8Os75OhTGPbHQpeQQR2gANNvfvQfQ9KGKbl6gYFzocU7JPa92Wd0MSk9/s5280/Taj%20Mahal%20-%20Linda,%20David.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3576" data-original-width="5280" height="217" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH-I7IsvO70KqGfCEdqFSDNJ52aijZsMahA3WwzrizdnEBUN7Snw8lDBep7vTWPLQn_8hY9j8k7jXfzcVGAufgluLGLUnc_JNi9HZLOk5Tr4Hkj8Ro0vxc2Cg8DOVBMXId8Os75OhTGPbHQpeQQR2gANNvfvQfQ9KGKbl6gYFzocU7JPa92Wd0MSk9/s320/Taj%20Mahal%20-%20Linda,%20David.jpg" width="320" /></a></div><p></p><p>We visited over a dozen cities ranging from the highly populated Bombay (now Mumbai), the capital of Delhi, to remote parts of Kashmir in the Himalayan mountains.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg8Btd5rSGk4NKPwXJDo4aBmotQb4GVXCfN5WBq1Swko3ZaV-gWSpKEkbw_P0omlv2BbBfTmvGbJqWeAk3jj3oW8-KOVGE83poOSiM3F5hxLLkx5U2qTupSROvN44mC4guhNNrb-CYvlzEviw2HFgO770LYJEaJkrbjbObCh6VpKo4brAQM_2RGbsJ/s640/image1163.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="432" data-original-width="640" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg8Btd5rSGk4NKPwXJDo4aBmotQb4GVXCfN5WBq1Swko3ZaV-gWSpKEkbw_P0omlv2BbBfTmvGbJqWeAk3jj3oW8-KOVGE83poOSiM3F5hxLLkx5U2qTupSROvN44mC4guhNNrb-CYvlzEviw2HFgO770LYJEaJkrbjbObCh6VpKo4brAQM_2RGbsJ/s320/image1163.jpg" width="320" /></a></div><p></p><p>India was still quite a remote and exotic location for westerners and our only communication with relatives back in Canada was by postal mail. My parents sent regular letters back home reporting on our experiences and adventures. We even sent back photographs, colour slides, and 8mm movie films.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGXabauYH91eo0ZkhxpuTavvXzC4l-4wSU_8Cv10TvO-vGB7GQnm--0UL2IxTK1OIgkUE405GTiRrbsKIoHhFKcsZp8uCE7uJKYJC0NJ6k0ar8jJuUtEL9oEaaEK6-HirP2iWzdkYRA9AZgyrpX1Y3fbq02rI_IAYggEo5qPScH7hGuJaO6hGILWnf/s4032/PXL_20230226_164649831.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGXabauYH91eo0ZkhxpuTavvXzC4l-4wSU_8Cv10TvO-vGB7GQnm--0UL2IxTK1OIgkUE405GTiRrbsKIoHhFKcsZp8uCE7uJKYJC0NJ6k0ar8jJuUtEL9oEaaEK6-HirP2iWzdkYRA9AZgyrpX1Y3fbq02rI_IAYggEo5qPScH7hGuJaO6hGILWnf/w152-h203/PXL_20230226_164649831.jpg" width="152" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1RXFQDutQaJyXq4vTX4yh0RtciabbqBRT_O4CXFjAhTSFy6QrVIdqd-B3aZVCjFIrX32jwbVptTZTXfFY_16p1JRAVWcHp_XguHFGc03RMJ2EsJDavkY4qlxAQKf_pvG0USkqg834Lt_az6m0pp52Af5fOFS_U5BJZ_he9Cr4b1ldMtR_csGY_PWE/s4032/PXL_20230226_164815008.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="173" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1RXFQDutQaJyXq4vTX4yh0RtciabbqBRT_O4CXFjAhTSFy6QrVIdqd-B3aZVCjFIrX32jwbVptTZTXfFY_16p1JRAVWcHp_XguHFGc03RMJ2EsJDavkY4qlxAQKf_pvG0USkqg834Lt_az6m0pp52Af5fOFS_U5BJZ_he9Cr4b1ldMtR_csGY_PWE/w230-h173/PXL_20230226_164815008.jpg" width="230" /></a></div><br /><p>My relatives faithfully keep all of the letters that we sent and recently returned them to us. Fifty years later, the typed and handwritten letters on thin airmail paper are still in surprising good condition.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdlxQ5mo0gFiTvezOX8ku4h0qAjHVwsHEiduXtdrGyPT4RxC7ZWcjHskdJex-cxXHmMxxrNje3mDiie-_6scFHWo1DEPR0Pz3Bk8w4Osx0xU5zmZSIQoOF4iEhkDvdmXnaF-2c5LLY90ILJSB2ECn9LOCaifwkFaHVVFf75VLPc2ZmedfsVsZB7w8K/s4032/PXL_20230226_164930313.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="166" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdlxQ5mo0gFiTvezOX8ku4h0qAjHVwsHEiduXtdrGyPT4RxC7ZWcjHskdJex-cxXHmMxxrNje3mDiie-_6scFHWo1DEPR0Pz3Bk8w4Osx0xU5zmZSIQoOF4iEhkDvdmXnaF-2c5LLY90ILJSB2ECn9LOCaifwkFaHVVFf75VLPc2ZmedfsVsZB7w8K/w221-h166/PXL_20230226_164930313.jpg" width="221" /></a></div><br /><p>A lot of effort went into writing these regular newsletters, and I realized that these stories might be of interest to more than just my children and grandchildren. So I undertook a project to enter all of the letters in book form. I added additional background material on my family and the power project, pictures taken at the time, and a postscript of our lives after returning to Canada. The result is a book about 180 pages in length.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr0-47Q77AMHwD8ds43o3MICM6Nvno0EBu1VMW-mgCVK6p0p8shrauJGpKQK3Fl3lIVnnlWENYGRbhUaNWN-fESwIWMb0svZS_EN4tZPe_a3diXHoojwyISVqsF3DitHde6er9j8PSin2zJlD3DEdB47XC5SU1OGY1JveufXiUZZgLBeoV6flV_nFY/s4032/PXL_20230226_164417238.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr0-47Q77AMHwD8ds43o3MICM6Nvno0EBu1VMW-mgCVK6p0p8shrauJGpKQK3Fl3lIVnnlWENYGRbhUaNWN-fESwIWMb0svZS_EN4tZPe_a3diXHoojwyISVqsF3DitHde6er9j8PSin2zJlD3DEdB47XC5SU1OGY1JveufXiUZZgLBeoV6flV_nFY/s320/PXL_20230226_164417238.jpg" width="240" /></a></div><p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTrXqBzvByhdkyimQK5jI-2e5zFwpz8cBCZASJSRYoi5-hXDHVfZtc5jy7moPts5awrmW0lhuPPvf5g7F7R6k98IvK2s0Kuujp0TSm74GzKoBnnl1Gwo4gbJ3BEwhs7QkepCMvA8PTYPvGmjg0Qf9R5z7qR2KSa-UV-YF_B1cTIj-0xRYHi7smOJZ1/s4032/PXL_20230226_164541830.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="154" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTrXqBzvByhdkyimQK5jI-2e5zFwpz8cBCZASJSRYoi5-hXDHVfZtc5jy7moPts5awrmW0lhuPPvf5g7F7R6k98IvK2s0Kuujp0TSm74GzKoBnnl1Gwo4gbJ3BEwhs7QkepCMvA8PTYPvGmjg0Qf9R5z7qR2KSa-UV-YF_B1cTIj-0xRYHi7smOJZ1/w205-h154/PXL_20230226_164541830.jpg" width="205" /></a></div><br /><p>The book, <i>Letters From India: The Chronicles of a Canadian Family Living in India from 1970 to 1972</i>, is available <a href="https://www.lulu.com/shop/jeff-tranter/letters-from-india-the-chronicles-of-a-canadian-family-living-in-india-from-1970-to-1972/paperback/product-zgezvn.html?q=letters+from+india&page=1&pageSize=4" target="">directly from lulu.com</a> for slightly under $20 US or the equivalent in other currency.</p><p>It can also be found on <a href="https://www.amazon.com/Letters-India-Chronicles-Canadian-Family/dp/0992138213/" target="_blank">Amazon</a>, <a href="https://www.barnesandnoble.com/w/letters-from-india-jeff-tranter/1142912292" target="_blank">Barnes and Noble</a>, Ingram, and other distributors. It uses a print-on-demand service which prints and ships the book locally in many countries around the world.</p><p>This book was done as a labour of love for friends and family, but I hope others will find it interesting as well. It provides a unique glimpse into a time when few North Americans were living in or travelling around India.</p>Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com1tag:blogger.com,1999:blog-1215830887795601932.post-6532375206821382982021-11-24T21:36:00.000-05:002021-11-24T21:36:10.790-05:00 Retrocomputing Basic Implementations<p>Here is a summary of a number of Basic implementations that I have come across and worked with as part of my retrocomputing hobby. Many of these were ported by me or others to different platforms from the ones they were originally written for (for example, single board computers based on the 6502, 6809, Z80, and 68000 microprocessors). These are all found on my <a href="https://github.com/jefftranter">github</a> account.</p>
<table>
</table><table border="1">
<tbody><tr>
<td><b>Name</b></td>
<td><b>Developer</b></td>
<td><b>Platform</b></td>
<td><b>Code size</b></td>
<td><b>Comments</b></td>
</tr>
<tr>
<td>Enhanced Basic (68000)</td>
<td>Lee Davison</td>
<td>68000</td>
<td>14K</td>
<td>Full-featured Basic for 68K platform</td>
</tr>
<tr>
<td>Tiny Basic for the 68000</td>
<td>Gordon Brandly</td>
<td>68000</td>
<td>4K</td>
<td>Derived from and similar to Palo Alto Tiny Basic.</td>
</tr>
<tr>
<td>Enhanced Basic (6502)</td>
<td>Lee Davison</td>
<td>6502</td>
<td>11K</td>
<td>Full-featured Basic for 6502 platform.</td>
</tr>
<tr>
<td>Microsoft Basic for 6502</td>
<td>Microsoft</td>
<td>Apple 2, Commodore, KIM-1, OSI, and others</td>
<td>8K</td>
<td>Basic used on several early 6502-based microcomputers.</td>
</tr>
<tr>
<td>Tiny Basic for 6502</td>
<td>Tom Pitman</td>
<td>6502</td>
<td>3K</td>
<td>Originally published in Dr. Dobbs Journal.</td>
</tr>
<tr>
<td>Apple 1 Basic</td>
<td>Steve Wozniak</td>
<td>6502 (Apple 1)</td>
<td>4K</td>
<td>Basic for the Apple 1, later expanded into Apple 2 Integer Basic.</td>
</tr>
<tr>
<td>BBC Basic 2 for Acorn Atom/BBC Computer</td>
<td>Roger Wilson (Acorn Computer)</td>
<td>6502-based Acorn Atom and BBC Computers</td>
<td>16K</td>
<td>Basic for the Acorn Atom and BBC Computers.</td>
</tr>
<tr>
<td>Tiny Basic for 6800</td>
<td>Tom Pitman</td>
<td>6800</td>
<td>2K</td>
<td>My version runs on the Heathkit ETA-3400.</td>
</tr>
<tr>
<td>Tiny Basic for 6809</td>
<td>Tom Pitman</td>
<td>6809</td>
<td>2K</td>
<td>6809 port of 6800 version.</td>
</tr>
<tr>
<td>TSC Micro BASIC PLUS</td>
<td>Technical Systems Consultants</td>
<td>6809</td>
<td>4K</td>
<td>Similar to Tiny Basic.</td>
</tr>
<tr>
<td>Sinclair ZX81 Basic</td>
<td>John Grant and Steve Vickers, Nine Tiles Networks and Sinclair Research</td>
<td>Sinclair ZX80/ZX81, Timex 1000</td>
<td>8K</td>
<td>Basic for the Sinclair ZX81 computer.</td>
</tr>
</tbody></table>
Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com0tag:blogger.com,1999:blog-1215830887795601932.post-46629342688442265612021-11-24T18:38:00.000-05:002021-11-24T18:38:08.448-05:00A List of Cross-Assemblers for Retrocomputing<p> In my retrocomputing projects with various processors I have used a number of cross-assemblers to build code. I've had to use several in order to support different processors as well as for compatibility with different software packages. For the most part they are similar, but have their own unique features and quirks.</p><p>I put this table together, mostly for my own reference, that others may also find useful. It is by no means a complete list -- just those that I have used.</p><table border="1">
<tbody><tr>
<td><b>Name</b></td>
<td><b>Author</b></td>
<td><b>Source</b></td>
<td><b>Supported Processors</b></td>
<td><b>Key Features</b></td>
<td><b>Comments</b></td>
</tr>
<tr>
<td>as9</td>
<td>Motorola, with changes by Albert van der Horst and others</td>
<td>https://home.hccnet.nl/a.w.m.van.der.horst/m6809.html</td>
<td>6809</td>
<td>macros</td>
<td>100% compatible with Motorola assembler</td>
</tr>
<tr>
<td>asl</td>
<td>Alfred Arnold and others</td>
<td>http://john.ccac.rwth-aachen.de:8000/as/</td>
<td>many (over 50)</td>
<td>Macros</td>
<td>I have used with several processors</td>
</tr>
<tr>
<td>asm6809</td>
<td>Ciaran Anscomb</td>
<td>https://www.6809.org.uk/asm6809/</td>
<td>6809, 6309</td>
<td>macros</td>
<td>Good choice if 6309 support needed.</td>
</tr>
<tr>
<td>cc65</td>
<td>John R. Dunning, Ullrich von Bassewitz, and others</td>
<td>https://www.cc65.org/</td>
<td>6502, 65C02</td>
<td>C compiler, assembler, linker, librarian</td>
<td>Supports several 8-bit computer platforms.</td>
</tr>
<tr>
<td>crasm</td>
<td>Leon Bottou</td>
<td>https://github.com/colinbourassa/crasm</td>
<td>6800, 6801, 6803, 6502, 65C02, Z80</td>
<td>macros</td>
<td>Included in most Linux distributions.</td>
</tr>
<tr>
<td>gcc</td>
<td>Richard Stallman and others</td>
<td>https://gcc.gnu.org/git/</td>
<td>Many</td>
<td>Compilers and assemblers</td>
<td>I used for 68000. Included in most Linux distributions.</td>
</tr>
<tr>
<td>lwasm</td>
<td>William Astle and others</td>
<td>http://lwtools.projects.l-w.ca/</td>
<td>6809, 6309</td>
<td>Cross-assembler and linker.</td>
<td>macros</td>
</tr>
<tr>
<td>vasmm68k_mot</td>
<td>Volker Barthelmann</td>
<td>http://sun.hasenbraten.de/vasm/</td>
<td>Many</td>
<td>Cross-assembler</td>
<td>I used for 68000.</td>
</tr>
<tr>
<td>z80asm</td>
<td>Bas Wijnen</td>
<td>http://savannah.nongnu.org/projects/z80asm</td>
<td>Z80</td>
<td>Z80 cross-assembler</td>
<td>Included in most Linux distributions.</td>
</tr>
</tbody>
</table>
<p></p>Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com1tag:blogger.com,1999:blog-1215830887795601932.post-34379987778858097002020-02-20T17:58:00.000-05:002020-02-20T17:58:51.694-05:00Hugo Winner Book Review: The Snow Queen by Joan D. Vinge<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQzFn0J4eUM7_yIV9wxh7ggJ_dw8WLHphg_EG1YY9ZPIik3L1VNo638vN4dEk8XGLHlEWwQY58vzTyRpocW4aU3t90f57Eu9zprvoeUyGuyAJUURxFbS711NkkPJWPN0zfNKFmQtmeSqY/s1600/IMG_20200220_113525.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQzFn0J4eUM7_yIV9wxh7ggJ_dw8WLHphg_EG1YY9ZPIik3L1VNo638vN4dEk8XGLHlEWwQY58vzTyRpocW4aU3t90f57Eu9zprvoeUyGuyAJUURxFbS711NkkPJWPN0zfNKFmQtmeSqY/s320/IMG_20200220_113525.jpg" width="240" /></a></div>
<br />
<br />
I found this novel rough going. I wanted to give up on it a few times, and I did set it aside for several weeks. But about half way through my interest picked up.<br />
<br />
There is nothing wrong with the story or writing. For some reason the plot and characters did not particularly appeal to me and it is leans more towards "soft" science fiction where I am generally a fan of the "hard" genre.<br />
<br />
It is very imaginative, and has some very poetic writing.Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com3tag:blogger.com,1999:blog-1215830887795601932.post-19258377552466743102019-11-19T18:27:00.003-05:002019-11-19T18:27:56.925-05:00A 68000 Disassembler<br />
I have found that a good way to really understand a microprocessor's instruction set is to write a disassembler for it. I have done this for a number of processors including the 6502, 6800, 6809, and Z80. My <a href="https://github.com/jefftranter/udis" target="_blank">udis disassembler</a> was implemented on Python and supports a number of processors.<br />
<br />
Having recently worked on my 68000 single-board computer, I decided to write a disassembler for the Motorola 68000. This is more challenging than for 8-bit processors due to it's complex instruction set and many addressing modes. I decided to again use Python as it is fast to develop, readable, and cross-platform.<br />
<br />
I wanted the design to be at least partially table based. I started with the table on the Motorola MC68000 Programmers Reference Card, but it did not adapt will to a software-based table. I found a <a href="http://goldencrystal.free.fr/M68kOpcodes-v2.4.pdf" target="_blank">very nice and succinct table</a> written by someone in France under the name of GoldenCrystal that was a better fit. It organized all of the 68000 instructions and decoding of fields in a logical manner. I made a spreadsheet based on the table data.<br />
<br />
The 68000 uses 16-bit opcodes, but they are not unique. Various bits in the opcode control the addressing modes and operands, so I needed to use an approach where each instruction has a bit pattern and a mask indicating which bits to examine when looking for a match to a specific opcode. For example, a NOP is $4E71 and all bits are valid but a MOVE instruction has thw two most significant bits as zeroes but the rest vary with the address mode.<br />
<br />
I exported the spreadsheet into CSV format, which can easily be read into a data structure from Python. I then use this data for determining what instruction is read. Then I handle the encoding of the instruction and any extension words or operands. Many instructions follow similar encoding and can use the same logic, while others are unique.<br />
<br />
It was somewhat tedious and time consuming to work my way through all of the possible instructions. As I proceeded, I wrote a test program with the instructions I was implementing and examples of each addressing mode. An additional good "stress test" of the code is to use random data (such as /dev/urandom on Linux) as input and make sure that it does not crash or produce errors.<br />
<br />
After few weeks of occasional evenings (interrupted by a trip to Europe) I had finished support for all instructions. The most complex was the MOVE instruction as it supports almost every addressing mode for both source and destination operands. The final program is just over 1000 lines of Python code including comments and blank lines.<br />
<br />
Here is some sample output:<br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">00000000 4E 71 NOP</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">00000004 A2 34 UNIMPLEMENTED</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">00000006 4A FC ILLEGAL</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">00000008 4E 70 RESET</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">00000012 4E 40 TRAP #$00</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">0000001A 00 7C AA 55 ORI #$AA55,SR</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">0000002A 02 7C AA 55 ANDI #$AA55,SR</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">00000032 60 5E BRA $00000092</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">000000BA 48 C2 EXT.l D2</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">000000BE 4E 69 MOVE USP,A1</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">000000DE 57 CF 00 22 DBEQ D7,$00000102</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">00000112 72 01 MOVEQ #$01,D1</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">00000146 EF 82 ASL.l #7,D2</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">000006E4 08 78 00 08 12 34 BCHG #$08,$1234</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">00000C9E 4C FB 55 AA 90 12 MOVEM.l $12(PC,A1),D1/D3/D5/D7/A0/A2/A4/A6</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">00000CF4 2C 6D 12 34 MOVEA.l $1234(A5),A6</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">00000D3A 18 3A 12 34 MOVE.b $1234(PC),D4</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">00000F24 55 91 SUBQ.l #2,(A1)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">00001334 DF B8 12 34 ADD.l D7,$1234</span><br />
<br />
With the -n or --nolist option, it only disassembles the instructions. This could be used to feed the output back into an assembler, if you were reverse engineering some code for example. Here is some sample output in this mode:<br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> NOP</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> UNIMPLEMENTED</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> ILLEGAL</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> RESET</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> TRAP #$00</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> ORI #$AA55,SR</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> ANDI #$AA55,SR</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> BRA $00000092</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> EXT.l D2</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> MOVE USP,A1</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> DBEQ D7,$00000102</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> MOVEQ #$01,D1</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> ASL.l #7,D2</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> BCHG #$08,$1234</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> MOVEM.l $12(PC,A1),D1/D3/D5/D7/A0/A2/A4/A6</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> MOVEA.l $1234(A5),A6</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> MOVE.b $1234(PC),D4</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> SUBQ.l #2,(A1)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> ADD.l D7,$1234</span><br />
<br />
The source code and test program can be found <a href="https://github.com/jefftranter/68000/tree/master/disasm" target="_blank">here</a>.<br />
<br />
This process gave me an appreciation for the effort that the Motorola engineers must have gone through to implement the native 68000 dissasembler in the TUTOR firmware which was written in assembly language.<br />
<br />
I can also appreciate that significant more work would be needed to extend this to support the 68020 or later processors which have more instructions and addressing modes.<br />
<br />
While it was not meant to be a production program, it was fun to write and I now have a much better understanding of the 68000 instruction set and its complexity, quirks and limitations.<br />
<div>
<br /></div>
Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com6tag:blogger.com,1999:blog-1215830887795601932.post-53138326312402293202019-09-29T12:43:00.000-04:002019-09-29T12:43:00.679-04:00Hugo Winner Book Review: Harry Potter and the Goblet of Fire by J. K. Rowling<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_S2Mmsz-iFK_LYCieirpgh7eMfqEBRJ4cvH-EWti97rwM64RKX9Ipr4lVxc_TAb6MBFJ6Q_bQt8s-xAhM373K0Ze2125bkoAEVxmnV6dnOXvznaU1p43PQRlqcVRvuFozFKoxI1PUZ6s/s1600/IMG_20190928_220449.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_S2Mmsz-iFK_LYCieirpgh7eMfqEBRJ4cvH-EWti97rwM64RKX9Ipr4lVxc_TAb6MBFJ6Q_bQt8s-xAhM373K0Ze2125bkoAEVxmnV6dnOXvznaU1p43PQRlqcVRvuFozFKoxI1PUZ6s/s320/IMG_20190928_220449.jpg" width="240" /></a></div>
<br />
<br />
Not many pure fantasy novels have won the Hugo award for best novel. One notable winner was The Sword in the Stone in 1939. This book, the fourth in the Harry Potter Series, won the award in 2001. This was the only one of the seven Harry Potter books to win a Hugo.<br />
<br />
I was vaguely familiar with the Harry Potter franchise but had never read any of the novels or seen the films. I would say that the book lived up to my expectations and I can see why they were so popular with young people. Highly imaginative, well plotted, and with well developed characters, the books never talk down to the reader. At 636 pages in the hardcover edition, this book was over twice as long as the earlier novels (but exceeded by the subsequent book).<br />
<br />
Given the popularity of the series, it is fitting that it won at least one Hugo award.Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com0tag:blogger.com,1999:blog-1215830887795601932.post-30609990721604892382019-09-04T18:05:00.001-04:002019-09-04T18:05:11.564-04:00Hugo Winner Book Review: The Dispossessed by Ursula K. Le Guin<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR6WX8PgZ988WE3mKWeu5Ei1XTBmhbuT0iUANBsnpE2esKDebpCGL4vvlHJ-AfzVRaFfyDL83wYizjdHKs-PDeGpM-wvV55WczJaQKfNFZVNMNHPC-xd8ua4zPCxFyR8kqqMEqUCUWsRs/s1600/IMG_20190903_222053.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR6WX8PgZ988WE3mKWeu5Ei1XTBmhbuT0iUANBsnpE2esKDebpCGL4vvlHJ-AfzVRaFfyDL83wYizjdHKs-PDeGpM-wvV55WczJaQKfNFZVNMNHPC-xd8ua4zPCxFyR8kqqMEqUCUWsRs/s320/IMG_20190903_222053.jpg" width="240" /></a></div>
<br />
<br />
Winner of the 1975 Hugo for best novel, this is a fascinating story about an unlikely hero and two planets with widely differing political systems. It fits into Le Guin's Hainish Cycle, like "The Left Hand of Darkness" a Hugo winner I previously reviewed.<br />
<br />
Highly original and imaginative, It describes an anarchist utopian society that almost had me convinced that it could work.<br />
<br />
Recommended reading, it is a standalone novel that doesn't require having ready any of the other novels in the series.Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com0tag:blogger.com,1999:blog-1215830887795601932.post-6185366233089179702019-08-03T13:05:00.000-04:002019-08-03T13:05:13.744-04:00Hugo Winner Book Review: Where Late the Sweet Birds Sang by Kate Wilhelm<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQNCcgAV7M1ZCS-F8ZSacdzKOsfFmxM7wW4dWVY_Sjt_sItreBu_THD7IfHyBWqSwfSrcWmFAVQl_RrhVtOsQMqS9_Z8hI_fDAFWx6aA5AoXLtwbeudCr11aczeNbxlcGiMQtnyJREAaA/s1600/IMG_20190803_121733.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQNCcgAV7M1ZCS-F8ZSacdzKOsfFmxM7wW4dWVY_Sjt_sItreBu_THD7IfHyBWqSwfSrcWmFAVQl_RrhVtOsQMqS9_Z8hI_fDAFWx6aA5AoXLtwbeudCr11aczeNbxlcGiMQtnyJREAaA/s320/IMG_20190803_121733.jpg" width="240" /></a></div>
<br />
<br class="Apple-interchange-newline" />This was the 1977 Hugo award winner for best novel.<br />
<br />
It is a near-future apocalyptic tale with some aspects that are disturbingly familiar today (e.g. pollution, climate change, new diseases, genetic engineering).<br />
<br />
The writing style is quite different from most of the classic SF authors, with much focus on characters and their emotions. I found it somewhat reminiscent of John Wyndham's work.<br />
<br />
An enjoyable novel, unpredictable and disturbing at times, I think it was well deserving of the awardJeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com0tag:blogger.com,1999:blog-1215830887795601932.post-85676965635729524432019-07-10T18:39:00.000-04:002019-07-10T18:39:32.946-04:00Hugo Winner Book Review: Foundation's Edge by Isaac Asimov<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvYb7FZGZvi0R4383Y_BdyMvL1ZJN1cAQIyByfmLAQBWfphgakS97g2_MVNP27vet6TFoB_PY8ypmKHKg2LcN-1nISF-q03yyqmpnECveo6cLH0sAFgn81Wr8pfeQNWk3e1-pbvhl_-EQ/s1600/IMG_20190709_231239.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvYb7FZGZvi0R4383Y_BdyMvL1ZJN1cAQIyByfmLAQBWfphgakS97g2_MVNP27vet6TFoB_PY8ypmKHKg2LcN-1nISF-q03yyqmpnECveo6cLH0sAFgn81Wr8pfeQNWk3e1-pbvhl_-EQ/s320/IMG_20190709_231239.jpg" width="240" /></a></div>
<br />
Isaac Asimov wrote the award winning Foundation trilogy, originally as a series of eight short stories published from 1942 through 1950, and then in the form of three novels. One portion, "The Mule", won the Hugo in 1946. The trilogy won a Hugo for "Best All-Time Series" in 1960.<br />
<br />
Despite requests from fans, he wrote no more books in the series until 1982 with the publication of Foundation's Edge. The novel, winner of the Hugo award in 1983, continued the series and took place after the events of the first three books.<br />
<br />
I believe what got Asimov motivated into writing a sequel was the challenge to tie the Foundation series in to many of the other novels he had written subsequently. He is able to weave into this novel references and themes from his novels The Stars, Like Dust, The Currents of Space, Pebble in the Sky, The Caves of Steel, The Naked Sun, The End of Eternity, and his robot stories.<br />
<br />
Like the original series, the book is not for everyone. It is heavy on dialog, has many characters, and a plot that has many unexpected twists and turns. Readers looking for space battles, monsters, and aliens will be left wanting.<br />
<br />
I read this novel some time ago, but read it again as part of the Hugo award reading challenge. I thoroughly enjoyed it.<br />
<br />
Asimov subsequently wrote more novels in the series, but he never again won a Hugo for best novel.Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com0tag:blogger.com,1999:blog-1215830887795601932.post-62136363167942651622019-06-30T12:34:00.003-04:002019-06-30T12:34:55.672-04:00Hugo Winner Book Review: The Fountains of Paradise by Arthur C. Clarke<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqI6QSFmoFqD6eOyeU3StmkryilTH5-cyHs6IBhbQBqEWRk5Y1SqAKKzA-habo9blbhsiMzONvYAgW3eScdHP7zbimp6g2sqEMBautc3a5cVjGGH29jjzmy2x2Xaz3PbJNOZbBlkTqUGg/s1600/IMG_20190630_095610.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqI6QSFmoFqD6eOyeU3StmkryilTH5-cyHs6IBhbQBqEWRk5Y1SqAKKzA-habo9blbhsiMzONvYAgW3eScdHP7zbimp6g2sqEMBautc3a5cVjGGH29jjzmy2x2Xaz3PbJNOZbBlkTqUGg/s320/IMG_20190630_095610.jpg" width="240" /></a></div>
<br />
I started this journey of reading Hugo award winning novels with books that were written well before I was born. Over 30 novels in, I'm now up to the Hugo award for best novel in 1980, the year that I got married.<br />
<br />
Isaac Asimov is my favorite science fiction writer, but when Arthur C. Clarke was writing at his best, I think he was a better writer. This novel is Clarke at the top of his form. Based on the idea of a "space elevator" (one which is theoretically possible and likely to happen some day) it has all the hallmarks of his writing including an exciting and imaginative story with many excellent little details. The characters are also a little more developed than in most of his stories.<br />
<br />
A hallmark of his writing seems to be contact with extraterrestrials, often highly advanced. This was not part of this story but he adds a subplot plot on this topic that gets weaved into the main story.<br />
<br />
<br />Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com0tag:blogger.com,1999:blog-1215830887795601932.post-78465051487108786502019-06-26T18:03:00.001-04:002019-06-26T18:03:12.343-04:00Hugo Winner Book Review: Dreamsnake by Vonda N. McIntyre<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioJDEHDvleilFz_Q6QIz5DlEjpohuWNS_TcQsG_8nCzCpv0WAPMHKfInEnnar_WFjQY5lGnGqVoovdygA2LWYZSUh3T7rMYngAPEiAdOmpXgsZIOUB23OzYEDoe68CJtU5NJvf9kah7HI/s1600/IMG_20190625_231327.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioJDEHDvleilFz_Q6QIz5DlEjpohuWNS_TcQsG_8nCzCpv0WAPMHKfInEnnar_WFjQY5lGnGqVoovdygA2LWYZSUh3T7rMYngAPEiAdOmpXgsZIOUB23OzYEDoe68CJtU5NJvf9kah7HI/s320/IMG_20190625_231327.jpg" width="240" /></a></div>
<br />
Winner of the Hugo award for besr novel of 1979, this is a touching and beautiful story with an original and imaginative plot, well developed characters, and a fascinating science fiction setting. It is science fiction at its best, where the plot and characters are primary. Earlier dominated by men, by 1979 the Hugo awards were being won about half the time by women, and in recent years women have almost entirely dominated the best novel awards. This is highly recommended ready for anyone, whether science fiction fans or not.<br />
<br />Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com1tag:blogger.com,1999:blog-1215830887795601932.post-91217045155546905572019-06-19T20:40:00.002-04:002019-06-19T20:40:26.706-04:00Hugo Winner Book Review: Gateway by Frederik Pohl<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqKryMwMD4mXxO-sdUcMGmH20Qj_WjE2DKuSQRsoT9A6PvjNE1Gzo-qdy3-qa5M8kEHyHmNpYvrkN2Su6b5vuZ2YYMbewcLfz8fRrN25jPqO1eMXZxGZgO5mFugDAFPezJ3GFDvMGnse8/s1600/IMG_20190618_225051.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqKryMwMD4mXxO-sdUcMGmH20Qj_WjE2DKuSQRsoT9A6PvjNE1Gzo-qdy3-qa5M8kEHyHmNpYvrkN2Su6b5vuZ2YYMbewcLfz8fRrN25jPqO1eMXZxGZgO5mFugDAFPezJ3GFDvMGnse8/s320/IMG_20190618_225051.jpg" width="240" /></a></div>
<br />
<br />
This novel won the Hugo award for best novel of 1978.<br />
<br />
I enjoyed it, finding it an eclectic mix of science fiction themes with interesting characters and a very imaginative premise. It later became part of a series of novels and stories around a similar theme: the mysterious alien Heechee race.<br />
<br />
The novel makes use of an interesting device in that many pages contain standalone text for signs, legal documents, classified ads, and even some kind of BASIC-like computer programming.<br />
<br />
Pohl was a life-long friend of Isaac Asimov, and even acted as his literary agent for a period of time. The book has some references to a "Dr Asmenion" who was an expert on explaining science and astronomy and likes to tell off-colour jokes and was apparently from somewhere near Smolensk, Russia. This is clearly a little jab at Asimov. Another letter is written by a "Harry Hellison" that sounds suspiciously like science fiction writer Larry Ellison.<br />
<br />
Pohl had a long career as a science fiction writer and editor, active right up to the time of his death in 2013 at age 93, but this was his only Hugo award winning novel (he did won some more Hugos in other categories).Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com0tag:blogger.com,1999:blog-1215830887795601932.post-56947343234793194192019-06-11T12:10:00.000-04:002019-06-11T12:10:11.698-04:00Hugo Winner Book Review: The Forever War by Joe Haldeman<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghFbjOWoQVEa1soz_Jbt1tfzx13_1auzKw1T7ahcmEo7Sm0oYXEyIRWmyhko8GM_Ujn2rUxYleE0mhBJiqSVEcTW0XmXduWwGbJjmuMlrBzZzeAZKb2-QK72dQVd84pp1wJ6ZxZQt65vg/s1600/IMG_20190611_114649.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghFbjOWoQVEa1soz_Jbt1tfzx13_1auzKw1T7ahcmEo7Sm0oYXEyIRWmyhko8GM_Ujn2rUxYleE0mhBJiqSVEcTW0XmXduWwGbJjmuMlrBzZzeAZKb2-QK72dQVd84pp1wJ6ZxZQt65vg/s320/IMG_20190611_114649.jpg" width="240" /></a></div>
<br />
This won the Hugo for best Science Fiction novel in 1976.<br />
<br />
It is about a long running war that is far away, fought by conscripted soldiers who don't want to be there, and ultimately turns out to be pointless and unnecessary. While definitely science fiction, it has many parallels with the Vietnam war that the author served in.<br />
<br />
Not a humorous or particularly pleasant novel, it is highly imaginative and makes one think about war and even the future of mankind. The Earth depicted in the early 21st century has many disturbing parallels to the world of today and where it might be headed.<br />
<br />
In summary, a fascinating read that was well deserving of the Hugo, particularly as the author went through 18 publishers before he found one willing to publish it.Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com0tag:blogger.com,1999:blog-1215830887795601932.post-44728621012868631772019-06-02T13:30:00.001-04:002019-06-02T13:30:22.486-04:00Hugo Winner Book Review: Rendezvous with Rama by Arthur C. Clarke<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWzvucCYeV_IT-IOCY_SwFB5qQbiCJJrSgi6vvhj4lVZDt7gcr6gAZIOI4A2z3C3bqnspk0izRKJ_qNWQkXwYV4BspBvv2-pJL-IbXBPIZMcEAMillJ8XPqMmgAQPLQj4_NBk0NW2ouCY/s1600/IMG_20190601_222615.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWzvucCYeV_IT-IOCY_SwFB5qQbiCJJrSgi6vvhj4lVZDt7gcr6gAZIOI4A2z3C3bqnspk0izRKJ_qNWQkXwYV4BspBvv2-pJL-IbXBPIZMcEAMillJ8XPqMmgAQPLQj4_NBk0NW2ouCY/s320/IMG_20190601_222615.jpg" width="240" /></a></div>
<br />
<br />
This was the Hugo award winner for best novel of 1974. It also won the other major science fiction award, the Nebula.<br />
<br />
This is one of Clarke's best novels in my opinion, and has all the hallmarks of his work: incredible imagination, a sense of wonder, and a theme found in almost every one of his novels: contact with intelligent aliens. It also has what some find annoying: he doesn't explain everything, leaving many questions unanswered and up to the reader to ponder.<br />
<br />
The novel spawned three sequels, which were written by author Gentry Lee (with some input from Clarke).Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com0tag:blogger.com,1999:blog-1215830887795601932.post-80170501099107741862019-05-29T20:28:00.000-04:002019-05-29T20:28:11.797-04:00Hugo Winner Book Review: The Gods Themselves by Isaac Asimov<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4CuxHjKjYAIxsSIyBjQ333HMK9jF3ftcUhksihKHL0gaBMNO03qxjkMJg0dnBaHtH5haoYXjBOXzfsQiQ0vtNdYRFimf2eJyC1iIw9fyad3ehJ3K0ta9O5Bz9-ovrPZ9xQetiE9gi1wk/s1600/IMG_20190529_112541.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4CuxHjKjYAIxsSIyBjQ333HMK9jF3ftcUhksihKHL0gaBMNO03qxjkMJg0dnBaHtH5haoYXjBOXzfsQiQ0vtNdYRFimf2eJyC1iIw9fyad3ehJ3K0ta9O5Bz9-ovrPZ9xQetiE9gi1wk/s320/IMG_20190529_112541.jpg" width="240" /></a></div>
<br />
<br />
This novel won the Hugo award for 1973.<br />
<br />
I had read it before, but it is one of Asimov's best novels and as it had been some years since reading it, I decided to read it again.<br />
<br />
I remember reading in Asimov's autobiography that the genesis of this novel was a criticism that his stories didn't feature non-human aliens or sex, so he was determined to write a novel with very alien aliens and (alien) sex.<br />
<br />
The novel is in three distinct parts: the first takes place on Earth, the second in a different (parallel) universe, and the third takes place on a future colonized moon.<br />
<br />
It is a standalone novel that doesn't fit into his robot or Foundation series, and in my opinion was Asimov in his prime. There were some similarities in his depiction of lunar colonies with books by Robert A. Heinlein, but I think this just reflected the general thinking of most science fiction authors of that era about where future colonization of the moon could go.<br />
<br />
He also put in some political intrigue among scientists, vying for fame and backstabbing each other, that is likely based on some of his experiences as a scientist and academic.Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com0tag:blogger.com,1999:blog-1215830887795601932.post-8543841245777233322019-05-23T21:43:00.004-04:002019-05-23T21:43:58.480-04:00Hugo Winner Book Review: To Your Scattered Bodies Go by Philip José Farmer<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH98t-R8-mgy0xyOQx5Io8U2_Dgt7yRCDlhtHZYaODpig2bYUR37FBG6itekPztEmCwUrhFFuL0-ZRMikY7E1ymYBbQaXWaeR5sy8BZHL3fYbxPew9Tttl86cAZ1VeD7yCJmvMLOBrAz0/s1600/IMG_20190523_213258.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH98t-R8-mgy0xyOQx5Io8U2_Dgt7yRCDlhtHZYaODpig2bYUR37FBG6itekPztEmCwUrhFFuL0-ZRMikY7E1ymYBbQaXWaeR5sy8BZHL3fYbxPew9Tttl86cAZ1VeD7yCJmvMLOBrAz0/s320/IMG_20190523_213258.jpg" width="240" /></a></div>
<br />
Another thoroughly enjoyable novel, this won the 1972 Hugo award for best novel.<br />
<br />
It was an easy read that I completed in just a few sittings. The style reminds me somewhat of older authors like Jules Verne and H. G. Wells, perhaps because the hero was a man from the late 19th century. In fact the main character is a man of so many abilities, like speaking dozens of languages, that I would have said it was a flaw in the book that made him unbelievable if it were not for the fact that Richard Francis Burton was an actual historical character.<br />
<br />
The book has a novel premise, interesting characters, gripping plot, and ended up becoming a series of five novels and several short stories.<br />
<br />
<br />Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com0tag:blogger.com,1999:blog-1215830887795601932.post-65538462313844218572019-05-20T20:32:00.004-04:002019-05-20T20:32:41.030-04:00Hugo Winner Book Review: Ringworld by Larry Niven<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBKls5MJc0yQq7i8PJLyw4T5gZmLTfMar6gRAjNpoSBQLvARy9j-mnpj-mW5RIc6C6KcQUbvzfDtShod1ApLCNDR2x5JBjThuFxYeTmYzgAZy-TevXXXXXgTpeAnigYeaH18krLy0L60A/s1600/IMG_20190520_190744.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBKls5MJc0yQq7i8PJLyw4T5gZmLTfMar6gRAjNpoSBQLvARy9j-mnpj-mW5RIc6C6KcQUbvzfDtShod1ApLCNDR2x5JBjThuFxYeTmYzgAZy-TevXXXXXgTpeAnigYeaH18krLy0L60A/s320/IMG_20190520_190744.jpg" width="240" /></a></div>
<br />
<br />
This was the Hugo award winner for best novel in 1971.<br />
<br />
Considered a classic, the Ringworld is a mysterious alien megastructure millions of miles in size. This first novel spawned a number of sequels and prequels.<br />
<br />
I thoroughly enjoyed this novel, particularly the concept of the Ringworld, but also the plot and characters.<br />
<br />
The first edition had a number of technical errors in it, most notably the idea of travelling eastward around the Earth in order to extend the date of a birthday, when in fact one would need to travel west to do this. Regarding this, Niven wrote, "If you own a first paperback edition of Ringworld, it's the one with the mistakes in it. It's worth money." Sure enough, my copy (pictured above) is indeed a first edition paperback.Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com0tag:blogger.com,1999:blog-1215830887795601932.post-65226886160759532602019-05-07T20:33:00.000-04:002019-05-07T20:33:21.412-04:00Hugo Winner Book Review: The Left Hand of Darkness by Ursula K. Le Guin <div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil7c4ZJa83nHXls2kqQDBhtJN62jqFoFh2Kib76_hIKu_NWlSbEQ7tcck5BoolKQoiv4KLdyEd5yNs3blU9oJQxCwv2FqeQ3KxORAwwfmGEqTzmneFzM7s1zFd9pGiV5TeuahEatTkKwg/s1600/IMG_20190506_232511.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1185" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil7c4ZJa83nHXls2kqQDBhtJN62jqFoFh2Kib76_hIKu_NWlSbEQ7tcck5BoolKQoiv4KLdyEd5yNs3blU9oJQxCwv2FqeQ3KxORAwwfmGEqTzmneFzM7s1zFd9pGiV5TeuahEatTkKwg/s320/IMG_20190506_232511.jpg" width="236" /></a></div>
<br />
This was the winner of the Hugo Award for best novel of 1970, and the first Hugo won by a woman author. I thoroughly enjoyed this novel - it is highly imaginative and original with a gripping plot and well-developed characters. The author describes an entire planet in great detail, with a detailed culture and even describing their calendar and time system. The people of the novel are androgynous, and it raises many interesting questions about the concept of gender, something that is very timely today.<br />
<br />
This was the first Le Guin novel I recall reading, and I look forward to reading her 1975 Hugo winning novel in the future.<br />
<br />Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com0tag:blogger.com,1999:blog-1215830887795601932.post-2071693681711619702019-04-19T18:39:00.006-04:002019-04-19T18:39:53.469-04:00Hugo Winner Book Review: Stand on Zanzibar by John Brunner<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDv4rygYxWuBrsFQfqCCJLgSfQzFhD-Jrz3dHESOhZeQ-hwy9Ti-MTWulAFGsYrD5gE1LPq3XMyw8Yn2H3QuOEY-zXnrMsQjbQ-7sRmFieT3VoDCW4LjXUsWWBVEc-7zQZnFiAjt50Jq8/s1600/IMG_20190419_151334.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1185" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDv4rygYxWuBrsFQfqCCJLgSfQzFhD-Jrz3dHESOhZeQ-hwy9Ti-MTWulAFGsYrD5gE1LPq3XMyw8Yn2H3QuOEY-zXnrMsQjbQ-7sRmFieT3VoDCW4LjXUsWWBVEc-7zQZnFiAjt50Jq8/s320/IMG_20190419_151334.jpg" width="236" /></a></div>
<br />
<br />
I really want to like this book, but at 72 pages in I had to set it aside.<br />
<br />
It reads more like a series of short scenes, rather than a novel, with little connection between them. While the author makes some rather interesting and accurate predictions about life in the future, I couldn't really find a plot or characters that I cared about.<br />
<br />
At a little over 10% of the way through the novel's 650 pages, I called it quits for now, the first time I've done this for any Hugo award-winning novel. I will make another attempt to complete it at a later date.<br />
<br />
Setting it aside, I picked up a copy of Heinlein's <i>The Puppet Masters</i>, was hooked within the first few pages, and finished it in a few days. Not a Hugo award winner, it is one of his better novels, avoiding most of the preaching or attempt to shock of some of his books.<br />
<br />
Next up, I am reading <i>Small Fry</i>, a memoir by Lisa Brennan-Jobs, daughter of Steve Jobs. It is an easy and enjoyable read and provides insight into Steve Jobs from a slightly different perspective than some other books written about him.Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com1tag:blogger.com,1999:blog-1215830887795601932.post-39140408491034734562019-04-14T00:00:00.000-04:002019-04-14T00:00:05.066-04:00A 6809 Single Board Computer: Instruction Trace/Step FunctionIn my JMON monitor for the 6502, I implemented a trace or step function where you can execute code one instruction at a time and see the results of execution on the CPU registers. This is very useful for debugging, particularly as this implementation supports stepping through ROM code, something that can't be done with breakpoints.<br />
<br />
For my 6809 single board computer I wondered if I could do the same for the 6809 processor. After some thought, it looked feasible, although more challenging as the 6809 has a larger and more complex instruction set than the 6502.<br />
<br />
The basic idea is to take the instruction to be executed and store it in a buffer in RAM. The values of all CPU registers from the previous instruction trace are restored and the instruction is executed. A jump instruction is placed right after the traced instruction that goes back to the trace program. After execution, the new register values can be displayed and saved. This allows running code that is in ROM, as it gets copied to RAM when executed.<br />
<br />
To implement this requires knowing the length of each instruction, as they can vary on the 6809 from one to five bytes depending on the instruction and addressing mode. From my previously written disassembler I already had code that could determine the instruction length and even disassemble it.<br />
<br />
A wrinkle in this approach is handling instructions which cause a change in the flow of execution, such as a JMP (jump) instruction which would not return if simply executed in the buffer. We need to handle this instruction as a special case. We can examine the destination address and update the saved program counter accordingly. We don't need to actually execute it since it changes no other registers than the PC. We do need to check for and handle both direct (8 bit) and extended (16-bit) jump instructions. For direct, the destination address needs to be calculated by combining the instruction operand with the current value of the direct page (DP) register.<br />
<br />
Jump to subroutine (JSR) in another special case. Here we need to push the return address on the stack (using the saved value of the stack pointer that we trace with) and then calculate the new PC value.<br />
<br />
Similarly, we can handle BRA/LBRA and BSR/LBSR like JMP and JSR but the effective address needs to be calculated by adding the offset to the current PC value. Again we don't need to execute the instruction, just update the new PC value.<br />
<br />
The interrupt related instructions SYNC, CWAI, SWI, SWI2, and SWI3 can all be simulated by pushing registers on the stack and setting the PC to the appropriate interrupt vector.<br />
<br />
RTS and RTI are simulated by pulling registers (in the case of RTI) or just the PC (for RTS) off the stack. One wrinkle is that in the 6809 we need to check the E (Entire) flag in the condition code register to know of we should restore all registers from the stack.<br />
<br />
Conditional branches are a little more tricky. They can transfer control to two different places depending on whether the condition is true or not. These are handled by writing into the execution buffer both the instruction being traced as well as different jumps depending on whether the branch is taken or not. The branch destinations can update the PC accordingly. The code in the buffer looks like below:<br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">XXXX XX 03 Bxx $03 (Taken) ; Instruction being traced</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">XXXX 7E XX XX JMP BranchNotTaken</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">XXXX 7E XX XX Taken JMP BranchTaken</span><br />
<br />
We execute the instruction in the buffer and let it perform the test. We need to handle all the possible branch instructions, both short and long versions.<br />
<br />
TFR (transfer) and EXG (exchange) instructions are okay to run except the cases where the source or destination is the PC. We need to handle those cases manually since it would otherwise change the flow of control.<br />
<br />
Similarly, PSHS/PHSU and PULS/PULU could potentially include the PC in the list of registers pushed or pulled. Currently I just check for this case, remove the PC from the list of registers, and warn the user in this case that it is not fully handled yet.<br />
<br />
Indexed addressing poses a challenge: we need to handle an instruction that changes flow of control like JMP 1,X with an arbitrary index addressing mode. It might also produce side effects in the case of instructions like JMP 1,X++. These are handled using a trick: instead of JMP, we run a LEAU instruction with the same indexed operand. Then we examine value of U, which should be the new PC. Currently the code can't handle addressing modes that change the U register like JMP ,U++.<br />
<br />
A final challenge is PCR relative index addressing. If we move the instruction to the buffer to execute it, the PC relative address is now wrong. I thought about this, and it should be possible to adjust the offset based on the difference between the original instruction location and the address of the buffer where it will be run. This would get a little complicated, so I didn't implement it (yet). For now I just ignore it and display a message at run time that it is not supported.<br />
<br />
After working out most of the logic as pseudocode, I implemented and debugged it. I started with the basic instructions and then added all of the special cases, testing them one at a time. Once done, I tested it with some smaller complete programs.<br />
<br />
Finally, I was able to integrate it into the "combined" ROM which also contains the ASSIST09 monitor, disassembler, and Microsoft Basic. I added the trace command as a new ASSIST09 "T" command. It took some shuffling but I was able to just get them all to fit in the 8K ROM.<br />
<br />
It hasn't been tested exhaustively, and it can't run BASIC because it uses some PC relative instructions, but it seems to work quite well. Here is some sample output:<br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">><b>T D000</b></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">D000 81 30 CMPA #$30 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PC=D002 A=FF B=FF X=FFFF Y=FFFF S=FFDF U=FFFF DP=FF CC=11111000 (EFHINZVC)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PRESS <space> TO CONTINUE, <q> TO QUIT </q></space></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">D002 25 04 BCS $D008 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PC=D004 A=FF B=FF X=FFFF Y=FFFF S=FFDF U=FFFF DP=FF CC=11111000 (EFHINZVC)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PRESS <space> TO CONTINUE, <q> TO QUIT </q></space></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">D004 81 3C CMPA #$3C </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PC=D006 A=FF B=FF X=FFFF Y=FFFF S=FFDF U=FFFF DP=FF CC=11111000 (EFHINZVC)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PRESS <space> TO CONTINUE, <q> TO QUIT </q></space></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">D006 25 C0 BCS $CFC8 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PC=D008 A=FF B=FF X=FFFF Y=FFFF S=FFDF U=FFFF DP=FF CC=11111000 (EFHINZVC)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PRESS <space> TO CONTINUE, <q> TO QUIT </q></space></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">D008 30 1F LEAX $1F ,X</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PC=D00A A=FF B=FF X=FFFE Y=FFFF S=FFDF U=FFFF DP=FF CC=11111000 (EFHINZVC)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PRESS <space> TO CONTINUE, <q> TO QUIT </q></space></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">D00A 34 50 PSHS U,X</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PC=D00C A=FF B=FF X=FFFE Y=FFFF S=FFDB U=FFFF DP=FF CC=11111000 (EFHINZVC)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PRESS <space> TO CONTINUE, <q> TO QUIT </q></space></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">D00C 0F 41 CLR $41 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PC=D00E A=FF B=FF X=FFFE Y=FFFF S=FFDB U=FFFF DP=FF CC=11111000 (EFHINZVC)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PRESS <space> TO CONTINUE, <q> TO QUIT </q></space></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">D00E CE C0 E7 LDU #$C0E7 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PC=D011 A=FF B=FF X=FFFE Y=FFFF S=FFDB U=C0E7 DP=FF CC=01111110 (EFHINZVC)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PRESS <space> TO CONTINUE, <q> TO QUIT </q></space></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">D011 0F 42 CLR $42 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PC=D013 A=FF B=FF X=FFFE Y=FFFF S=FFDB U=C0E7 DP=FF CC=01111110 (EFHINZVC)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PRESS <space> TO CONTINUE, <q> TO QUIT </q></space></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">D013 33 4A LEAU $0A ,U</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PC=D015 A=FF B=FF X=FFFE Y=FFFF S=FFDB U=C0F1 DP=FF CC=01011001 (EFHINZVC)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">PRESS <space> TO CONTINUE, <q> TO QUIT </q></space></span><br />
<br />
<b>References</b><br />
<br />
<ol>
<li>https://github.com/jefftranter/6809/tree/master/sbc/trace</li>
<li>https://github.com/jefftranter/6809/tree/master/sbc/combined</li>
<li>https://github.com/jefftranter/6809/tree/master/sbc/disasm</li>
<li>https://github.com/jefftranter/6502/tree/master/asm/jmon</li>
</ol>
Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com2tag:blogger.com,1999:blog-1215830887795601932.post-72467545093914095422019-04-13T15:20:00.001-04:002019-04-13T15:20:36.372-04:00A 6809 Single Board Computer: The MC6839 Floating Point ROM<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiquu0SN6Ms6El5Q1jKsfSpkuoDPqraWR7WKuqhYacQ89E0kewz9Q54bMdkrdHFNa9ClfbjCCBIyR8LZx9Je38gH_8X4SfCZLtPQ7ZXpxYh1C1IUQkfIJBi-oxa3mPsOHjLaNPlJBtOTtg/s1600/Screenshot+from+2019-04-13+13-39-05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="565" data-original-width="400" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiquu0SN6Ms6El5Q1jKsfSpkuoDPqraWR7WKuqhYacQ89E0kewz9Q54bMdkrdHFNa9ClfbjCCBIyR8LZx9Je38gH_8X4SfCZLtPQ7ZXpxYh1C1IUQkfIJBi-oxa3mPsOHjLaNPlJBtOTtg/s320/Screenshot+from+2019-04-13+13-39-05.png" width="226" /></a></div>
<br />
Implementing floating point math was a challenge with 8-bit microprocessors. The early version of BASIC for the 6502-based Apple 1 and Apple 2 series written by Steve Wozniak only supported 16-bit integer variables in order to keep the size down and achieve acceptable performance. Later, Applesoft BASIC was licensed from Microsoft which supported floating point variables. A significant amount of the code for Microsoft BASIC for 8-bit microprocessors was dedicated to floating point math. Some versions, loaded from tape, gave the user the option to leave out the sin/cos/tan trig functions to save space and free up some memory.<br />
<br />
The 6809 supports instructions for 8-bit addition, subtraction, and division and some 16-bit math instructions. While more powerful than earlier processors like the 6502 and 6800, implementing floating point math was still a significant undertaking. Motorola saw an opportunity to offer a floating point math library as a standard product for the 6809. This was made more viable for two reasons:<br />
<br />
<ul>
<li>An IEEE standard for floating point math formats appeared to be poised to become an industry standard.</li>
<li>The 6809 allowed writing position independent code, so a floating point library could be offered in binary form that would be independent of the memory map of the system it needed to run on.</li>
</ul>
<br />
Out of this came a product: the MC6839 Floating Point ROM. While essentially a software product, it was sold as hardware: an 8K ROM programmed with the floating point code. As well as the ROM, it included a programming manual almost 100 pages in length, describing how to use it.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyfd580PTfOLjHIRVMQyU7Y1xgjqTPf91pkyccvRSYvN8eoegk-LZ1ZUD0Q63DTrnvM6VfHDmr70Sh4g3Vm3yN8rKyWGfX9-pnlrb4O-R2T5SPlXpZLmDEMa5o9mZPbYaE5PDQTUJhd6c/s1600/Screenshot+from+2019-04-13+13-38-26.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="501" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyfd580PTfOLjHIRVMQyU7Y1xgjqTPf91pkyccvRSYvN8eoegk-LZ1ZUD0Q63DTrnvM6VfHDmr70Sh4g3Vm3yN8rKyWGfX9-pnlrb4O-R2T5SPlXpZLmDEMa5o9mZPbYaE5PDQTUJhd6c/s320/Screenshot+from+2019-04-13+13-38-26.png" width="267" /></a></div>
The basic features of the library were:<br />
<br />
<ul>
<li>An 8KB ROM which would run at any contiguous range of addresses.</li>
<li>All RAM used was relative to the stack pointer.</li>
<li>A well documented API that allowed operands to be passed in registers or via the stack.</li>
<li>Fully implemented the IEEE Standard for floating point math (at the time, still in draft form).</li>
<li>Support for the following operations: add, subtract, multiply, divide, remainder, square root, integer part, absolute value, negate, condition code compares, conversion between integer and floating point, and conversion between binary floating point and BCD.</li>
<li>Supported three precisions (4, 8, and 10 bytes) defined by the IEEE standard.</li>
<li>Supported the rounding modes, closure modes, and normalize modes defined by the standard.</li>
<li>Supported handling of exceptions (e.g. division by zero).</li>
</ul>
<br />
According to the source code it was written around 1980, with revisions up to at least 1982. The author names in the source code were Greg Stevens, Joel Boney, and G. Walker. In 1988 the source code was put in the public domain by Motorola, and can be found on the Internet as well as the binary for the ROM.<br />
<br />
I came across the code and decided to try it out on my 6809 single board computer. There is a programming example in the manual that finds the roots to quadratic equations of the form ax^2 + bx +c = 0 using the classic formula -b +/- sqrt(b^2 - 4ac) / 2a<br />
<br />
I typed in the example and adapted it to the lwasm assembler. The program uses a standard set of macro instructions to set up the parameters in the correct calling sequences for the ROM. These macros make the code much more readable and were easily ported to the lwasm assembler. I needed to make a few changes in order to make the example a complete runnable program. When run, and with the S record file for the MC6839 ROM also loaded into memory, I was able to get the example to run and produce the correct results. The code is on my github account.<br />
<br />
Since I had the source, I took a look at whether I could assemble it. It would take some effort because the original source required a special Motorola "structured assembler" that I have not been able t find any information about. It has a number of structured programming macros for things like looping and conditionals. Given some time this could be reversed engineering by looking at the binary file.<br />
<br />
I also found that the source does not quite match the binary (the former has a 1980 copyright date and the latter 1982). Without having a known good binary that corresponds to the source code, porting would be a challenge, so I set any further work on this aside for now.<br />
<br />
The MC6839 Floating Point ROM was Motorola's first foray into this type of binary ROM product. The data sheet lists the product as "preliminary" and according to one source it was never actually offered as a product.<br />
<br />
Later processors, like the 68000 series, would support floating point math in hardware using either a separate dedicated chip or on-board floating point unit (FPU). These still use (as do modern computers, including your smart phone) the IEEE standard for floating point math.<br />
<br />
<b>References</b><br />
<br />
<ol>
<li>https://github.com/jefftranter/6809/tree/master/sbc/mc6839</li>
<li>http://github.com/brouhaha/fp09</li>
<li>http://www.colorcomputerarchive.com/updates/2017</li>
<li>http://www.classiccmp.org/pipermail/cctalk/2017-March/033678.html</li>
<li>http://www.classiccmp.org/pipermail/cctech/2016-June/019519.html</li>
<li>http://www.colorcomputerarchive.com/coco/Documents/Manuals/Hardware/MC6839%20Floating-point%20ROM%20Manual.pdf</li>
</ol>
Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com1tag:blogger.com,1999:blog-1215830887795601932.post-72450375758138755442019-03-17T19:40:00.001-04:002019-03-17T19:40:17.483-04:00Hugo Winner Book Review: Lord of Light by Roger Zelazny<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeXRHqF_DwB1EuoNidSRIXRSDJ3n6cREdjrCdaa_RUlJw83nEibY-B3D-4B3Ze8ohRnhkCejGlhMom4XlmVtTdysZ0__xIuL7uNo_o-JpU4Yy91s2J_c8HpaRFUOhC4DMrjeLcZTkqIpY/s1600/IMG_20190317_192620.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeXRHqF_DwB1EuoNidSRIXRSDJ3n6cREdjrCdaa_RUlJw83nEibY-B3D-4B3Ze8ohRnhkCejGlhMom4XlmVtTdysZ0__xIuL7uNo_o-JpU4Yy91s2J_c8HpaRFUOhC4DMrjeLcZTkqIpY/s320/IMG_20190317_192620.jpg" width="240" /></a></div>
<br />
Arthur C. Clarke's Third Law states: <i>Any sufficiently advanced technology is indistinguishable from magic</i>. This book is based on a similar premise: Any being with sufficiently advanced technology is indistinguishable from a god.<br />
<br />
The book was the winner of the Hugo Award for best novel in 1968. An interesting mixture of science fiction and Hindu and Buddhist mythology, it is never really explained where or when the events happen.<br />
<br />
I found it an interesting concept, but I didn't fully buy into it and didn't find any characters that I really liked or felt that I understood. I found it rough going to get through, despite being extremely well written and very poetic in places.<br />
<br />
It is an interesting and imaginative concept that defies categorization as science fiction, fantasy, or something else.<br />
<div>
<br /></div>
Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com0tag:blogger.com,1999:blog-1215830887795601932.post-28540460748188394652019-02-20T19:37:00.000-05:002019-02-20T19:37:06.107-05:00Hugo Winner Book Review: The Moon is a Harsh Mistress by Robert A. Heinlein<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKEe5VSQv6-X87Y89mg7G0usHN5ZVXrSezoSieuj0JyCXv5BYhox0quKC-7JEoLgjlfVZzDFVQvGp-4hCzedhnVncr8Q2Gor61XnbM96Px_M97yJqp8u_lT2QvXAyUtsC6T6zAGEMSs_E/s1600/IMG_20190220_193400.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKEe5VSQv6-X87Y89mg7G0usHN5ZVXrSezoSieuj0JyCXv5BYhox0quKC-7JEoLgjlfVZzDFVQvGp-4hCzedhnVncr8Q2Gor61XnbM96Px_M97yJqp8u_lT2QvXAyUtsC6T6zAGEMSs_E/s320/IMG_20190220_193400.jpg" width="320" /></a></div>
<br />
The winner of the Hugo for best novel in 1967, this was the sixth (and last) Hugo won by Heinlein.<br />
<br />
It is pretty much classic Heinlein fare, with a good adventure story, interesting characters, and some bold predictions about the future. He also used it as a vehicle to promote some of his ideas on politics, the military, and marriage, but keeps it a little more restrained and less preachy than some of his earlier (and later) novels. It also has a little more humour than his earlier novels.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkAXBNH_ll2O8ji1TLzEf7Gtf-wLhxPUWDINglvqLvloD5bjctKItB_iOJYsYbMX-ODG5ZyVRt01Fct6MlomCXAEj5EHNurnYrPs1k_etGhhlqSeHt8YFQicUPVG01DzuERAAowILKw48/s1600/IMG_20190220_193300.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkAXBNH_ll2O8ji1TLzEf7Gtf-wLhxPUWDINglvqLvloD5bjctKItB_iOJYsYbMX-ODG5ZyVRt01Fct6MlomCXAEj5EHNurnYrPs1k_etGhhlqSeHt8YFQicUPVG01DzuERAAowILKw48/s320/IMG_20190220_193300.jpg" width="240" /></a></div>
<br />
I had read it some time ago, but enjoyed it on re-reading. In some ways it seems more like his stories written prior to Stranger in a Strange Land, despite being written later. My only complain was that it used a strange plot device: the narrator speaks in a dialect of English influenced by Russian. The use of some Russian words was fine, but his speech takes on some features of Russian grammar, most notably omitting the use of the article "the". Find it makes for annoying read after while.<br />
<br />
The novel also helped popularize the expression TANSTAAFL: There Ain't No Such Thing As A Free Lunch, although it was apparently in use before the book used it.<br />
<br />
Reviewing Heinlein's bibliography, I would also say that this marked the last of his books that I really enjoyed. His later works (1970 and later) seemed to me to either repeat similar themes, and/or seemed to be written merely to shock the reader.Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com0tag:blogger.com,1999:blog-1215830887795601932.post-57466267894260956142019-02-12T20:50:00.000-05:002019-02-12T20:50:28.745-05:006809 Single Board Computer: TSC Micro Basic PlusOn the hunt for interesting software that could run on my 6809 Single Board Computer, I came across a small BASIC interpreter.<br />
<br />
Originally written for the 6800 processor to run on systems like the Southwest Technical Products SWTPC, Micro Basic Plus was developed by Technical Systems Consultants in 1976 and cost $15.95 for the manual and listing. A cassette tape was $6.95 and paper tape was $6.00. The original version can be found <a href="http://www.swtpc.com/mholley/TSC_MicroBasic/TSC_MicroBasic.htm" target="_blank">here</a> and had this marketing blurb about it:<br />
<br />
<hr />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">TSC Micro Basic Plus</span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">This is the most complete small Basic available to micro users. Statements include: PRINT, INPUT, READ, DATA, RESTORE, IF ... THEN, GOTO, GOSUB, LET, ON ...GOTO, ON ...GOSUB, RETURN, FOR (with + and - step), NEXT, DIM (single and double dimensioned arrays up to 98 by 98), REM and END. There are also several functions available which include TAB and SPC (for output formatting), RND, ABS, SGN and exponentiation. The commands available to the user are LIST, SCRATCH, RUN, and MONITOR. But the list does not stop here. MICRO BASIC PLUS also includes a complete line editor ability to have multiple statements per line, direct execution of most statements, large arithmetic range (integer only -99999 to +99999), and a very simple load and dump procedure for saving the user's BASIC program on paper tape or cassette and then reloading it at a later time. Also included is an EXTERNAL statement which allows the user to write 6800 machine language subroutines to be called during BASIC program execution.</span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">You are probably thinking all this sounds great, but if the less extensive versions of small BASIC require 23K of memory then this version must require 5 or 6K because the capability is doubled. Well here is the icing on the cake. MICRO BASIC PLUS resides in a fraction over 3K which means that in a 4K system you still have room for a 30 to 60 line BASIC program. For more complex programs, we recommend a system with 8K or more of memory.</span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">One more plus... you not only receive a complete manual and hex dump of the program, but also the fully commented source listing! This is a great aid for learning programming techniques as well as enabling you to alter the program should you so desir</span>e.<br />
<hr />
<br />
I found a 6809 port <a href="https://www.cs.drexel.edu/~bls96/6809sbc/" target="_blank">here</a>, developed by Drexel University to run on their 6809 Single Board Computer. It looks to have been a straight port from 6800 to 6809 mnemonics with the input/output routines adapted to their hardware and monitor.<br />
<br />
I ported it to my board, using ASSIST09 monitor routines for i/o. I had it up and running in an evening, and made a few improvements after that. It supports most common BASIC keywords including ON/GOTO and ON/GOSUB and one and two dimensional arrays.<br />
<br />
Overall, though, the language is pretty limited as compared to other BASICs with support for integer math only and no string variables at all. This is not surprising given that it is only a little of 3 Kilobytes in size! It is not too different in capabilities from Apple 1 BASIC originally written by Steve Wozniak and later expanded into Integer BASIC for the Apple ][.<br />
<br />
I tried a few sample programs and they ran quite well. I made an enhancement it to show full error messages rather than just numbers (which increases the size by another 1/2 K or so). The code is <a href="https://github.com/jefftranter/6809/tree/master/sbc/tscbasic" target="_blank">here</a>.<br />
<br />
For running real BASIC programs I think I will stick to the port of Microsoft BASIC for the Color Computer, but this is an interesting little program.Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com1tag:blogger.com,1999:blog-1215830887795601932.post-65116062124605806772019-02-08T19:10:00.000-05:002019-02-08T19:10:06.228-05:00A 6809 Single Board Computer: Cross-Compilers under Linux<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH9huPxyBUmWqBh0LaPMmESR5wvAyNEX33oV3VqQsAU4Goc4pbz5lsGqA-f_ulBuR1wdAvUzz0h_cnlHBy9uRc9iLGxCuQcX_9_nk0xrnTg8sYhvcIjR2Mzx_6HcRBcevc1kTcz9vqOaE/s1600/IMG_20190127_154153.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH9huPxyBUmWqBh0LaPMmESR5wvAyNEX33oV3VqQsAU4Goc4pbz5lsGqA-f_ulBuR1wdAvUzz0h_cnlHBy9uRc9iLGxCuQcX_9_nk0xrnTg8sYhvcIjR2Mzx_6HcRBcevc1kTcz9vqOaE/s320/IMG_20190127_154153.jpg" width="320" /></a></div>
<br />
Assembling code by hand is possible, but for any program of non-trivial size, cross-compilation is the way to go, even for 8-bit processors like the 6809. When working with my 6809 single board computer I went looking for a suitable cross-assembler. My requirements were to support the 6809, run on Linux, and be freely available. I came across three suitable programs, which I'll briefly describe here.<br />
<h2>
AS9 Assembler</h2>
Home page: http://home.hccnet.nl/a.w.m.van.der.horst/m6809.html<br />
<br />
Documentation: http://home.hccnet.nl/a.w.m.van.der.horst/as11v2.pdf<br />
<br />
This code is apparently derived from the original and official Motorola cross-assembler circa 1981. Written in very old pre-ANSI standard C, it was modified by a number of people over the years, and this version was last modified Albert van der Horst in 2004 to compile under Linux. I had no trouble building it under Ubuntu Linux.<br />
<br />
As the official Motorola assembler, it follows the Motorola documentation. It seems pretty comprehensive, and supports the 6800, 6809, 68HC11, and some other chips in the 68xx series.<br />
<br />
I have used this as my primary cross-assembler to develop or port the 6809 code I've been working on. The S-record files it generates are happily accepted by the ASSIST09 monitor's Load command.<br />
<br />
Here is a sample output listing:<br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">0005 7000 ORG $7000 ; Start address</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">0006 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">0007 7000 86 12 START: LDA #$12</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">0008 7002 c6 34 LDB #$34</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">0009 7004 8e 56 78 LDX #$5678</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">0010 7007 1e 89 EXG A,B</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">0011 7009 12 NOP</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">0012 700a 12 NOP</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">0013 700b 39 RTS</span><br />
<br />
The only quirk I encountered is a known issue where it can produce invalid warnings about comments. I worked around this when needed by disabling warnings with a command line option.<br />
<h2>
ASM6809 Assembler</h2>
Home page: https://www.6809.org.uk/asm6809<br />
<br />
Documentation: https://www.6809.org.uk/asm6809/doc/asm6809.shtml<br />
<br />
This is a portable cross assembler targeting the Motorola 6809 and Hitachi 6309 written by Ciaran Anscomb. It features arbitrarily complex expressions (with most C-style operators available), forward references, macro expansion and conditional assembly. Output formats are: raw binary, DragonDOS binary, Color Computer RS-DOS or "DECB" binary, Motorola S record, and Intel HEX.<br />
<br />
Written in C, it is licensed under the GPL and is actively being maintained with the latest version being 2.11 released on 2018-07-27.<br />
<br />
I downloaded the source and was able to build it with no problems simply by running the configure script, make, and sudo make install.<br />
<br />
Trying it on my 6809 disassembler program (about 2000 lines of code), the only issues I encountered were that it didn't accept labels with a colon at the end and it didn't like one symbol I used that started with a dot. After making appropriate changes, the code built fine. It even warns that some long branches fit in eight bits and could have used short branches, so I modified them and made the code a little smaller. I did notice that it generated slightly different code than the as9 assembler had, where it picked a different (more efficient) indexed addressing mode that could use a 5-bit displacement.<br />
<br />
Here is a sample listing:<br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">7000 ORG $7000 ; Start address</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">7000 8612 START LDA #$12</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">7002 C634 LDB #$34</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">7004 8E5678 LDX #$5678</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">7007 1E89 EXG A,B</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">7009 12 NOP</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">700A 12 NOP</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">700B 39 RTS</span><br />
<br />
It generated a Motorola S record (RUN) file, but the ASSIST09 firmware did not like to load it. Investigation showed that it was producing S record files with invalid checksums. I made a code fix to the source for this. It also doesn't produce the S9 record at the end of the file that ASSIST09 wants to see, unless you have an END directory specifying that start address.<br />
<h2>
LWTOOLS</h2>
Home page: http://lwtools.projects.l-w.ca/<br />
<br />
Documentation: http://lwtools.projects.l-w.ca/manual/manual.html<br />
<br />
LWTOOLS is a set of cross-development tools for the Motorola 6809 and Hitachi 6309 microprocessors. It supports a number of output formats including raw binary, Motorola S record, Color Computer binaries, and a proprietary object file format that supports linking.<br />
<br />
It is implemented in C and is actively maintained. I used version 4.16 that was released in December 2018.<br />
<br />
It supports a number of platforms. I was able to build it with no issues on Ubuntu Linux. It installs a number of tools including lwasm, lwlink, lwar, and lwobjdump.<br />
<br />
Here is a sample output listing:<br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> ( ex1.asm):00005 ORG $7000 ; Start address</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> ( ex1.asm):00006 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">7000 8612 ( ex1.asm):00007 START LDA #$12</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">7002 C634 ( ex1.asm):00008 LDB #$34</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">7004 8E5678 ( ex1.asm):00009 LDX #$5678</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">7007 1E89 ( ex1.asm):00010 EXG A,B</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">7009 12 ( ex1.asm):00011 NOP</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">700A 12 ( ex1.asm):00012 NOP</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">700B 39 ( ex1.asm):00013 RTS</span><br />
<br />
I only tried the assembler, using my disassembler program again. It didn't like items in FCB directives to be separated by any white space, only commas. It also didn't a like symbol starting with "." Other than that it assembled it fine, and generated a S record file which I successfully loaded and ran on the single board computer.<br />
<br />
For advanced development work where you might want to assemble multiple files and link them, this looks like a good choice for a toolset. A 6809-based C compiler I have tried, CMOC, uses it as it's cross-assembler.<br />
<h2>
Summary</h2>
All three of these cross-assemblers look adequate for basic 6809 assembly language programming hosted on a Linux desktop. With a few changes I was able to get same source code for my disassembler to build with all three assemblers.Jeff Tranterhttp://www.blogger.com/profile/12906110561479326057noreply@blogger.com0