• Please review our updated Terms and Rules here

Running an old Altair 8800 program (w/ simulator) exploring old magazines

voidstar78

Veteran Member
Joined
May 25, 2021
Messages
684
Location
Texas
There are various YT videos already of Altair playing Daisy... But:

I was reading (online) through some old magazines from early 1970s, and it had a "write in" section from readers. I came across a write-in from a certain Kurt Inman. The write-in (from Kurt) mentioned how he was 11 years old and had written a variety of programs and was about to put together an Altair. Cute story, hoped Kurt went on to do great things...
(page 7, November 1975)

After some more browsing, I found an article about a year later from someone with this same name (Kurt Inman) of a simple program for an Altair. I can't say for sure if it's the same person, but I'd like to imagine this now 12-year old had submitted a full article to a magazine.
(page 31)

Since I've never actually used an Altair before, I figured this would be a good excuse to try it out. I've written plenty of "guess my number" games in BASIC, but never in raw machine code.

Is there an Altair simulator that will emulate playing audio on a radio?


1663813109471.png



Simulator:


Here is the code transcribed from the article, if anyone else wants to give it a go. And attached is a BIN file that the simulator above seems to support loading.

Cheers Kurt, wherever you are :D



Code:
dec    hex    oct        oct 
addr    addr    addr        code    hex
0    000    000        041    21
1    001    001        000    00
2    002    002        044    24
3    003    003        072    3A
4    004    004        200    80
5    005    005        000    00
6    006    006        107    47
7    007    007        224    94
8    008    010        312    CA
9    009    011        030    18
10    A    012        000    00
11    B    013        362    F2
12    C    014        023    13
13    D    015        000    00
14    E    016        076    3E
15    F    017        000    00
16    010    020        303    C3
17    011    021        036    1E
18    012    022        000    00
19    013    023        076    3E
20    014    024        377    FF
21    015    025        303    C3
22    016    026        036    1E
23    017    027        000    00
24    018    030        315    CD
25    019    031        050    28
26    1A    032        000    00
27    1B    033        303    C3
28    1C    034        041    21
29    1D    035        000    00
30    1E    036        062    32
31    1F    037        047    27
32    020    040        000    00
33    021    041        373    FB
34    022    042        303    C3
35    023    043        041    21
36    024    044        000    00
37    025    045        041    21
38    026    046        110    48
39    027    047        000    00
40    028    050        176    7E
41    029    051        376    FE
42    2A    052        377    FF
43    2B    053        312    CA
44    2C    054        050    28
45    2D    055        000    00
46    2E    056        026    16
47    2F    057        040    20
48    030    060        005    05
49    031    061        302    C2
50    032    062        070    38
51    033    063        000    00
52    034    064        106    46
53    035    065        015    0D
54    036    066        302    C2
55    037    067        063    33
56    038    070        000    00
57    039    071        025    15
58    3A    072        302    C2
59    3B    073        063    33
60    3C    074        000    00
61    3D    075        054    2C
62    3E    076        303    C3
63    3F    077        053    2B
64    040    100        000    00
65    041    101            00
66    042    102            00
67    043    103            00
68    044    104            00
69    045    105            00
70    046    106            00
71    047    107            00
72    048    110            00
73    049    111            00
74    4A    112            00
75    4B    113            00
76    4C    114            00
77    4D    115            00
78    4E    116            00
79    4F    117            00
80    050    120            00
81    051    121            00
82    052    122            00
83    053    123            00
84    054    124            00
85    055    125            00
86    056    126            00
87    057    127            00
88    058    130            00
89    059    131            00
90    5A    132            00
91    5B    133            00
92    5C    134            00
93    5D    135            00
94    5E    136            00
95    5F    137            00
96    060    140            00
97    061    141            00
98    062    142            00
99    063    143            00
100    064    144            00
101    065    145            00
102    066    146            00
103    067    147            00
104    068    150            00
105    069    151            00
106    6A    152            00
107    6B    153            00
108    6C    154            00
109    6D    155            00
110    6E    156            00
111    6F    157            00
112    070    160            00
113    071    161            00
114    072    162            00
115    073    163            00
116    074    164            00
117    075    165            00
118    076    166            00
119    077    167            00
120    078    170            00
121    079    171            00
122    7A    172            00
123    7B    173            00
124    7C    174            00
125    7D    175            00
126    7E    176            00
127    7F    177            00
128    080    200        xxx    00
129    081    201            00
130    082    202            00
131    083    203            00
132    084    204            00
133    085    205            00
134    086    206            00
135    087    207            00
136    088    210            00
137    089    211            00
138    8A    212            00
139    8B    213            00
140    8C    214            00
141    8D    215            00
142    8E    216            00
143    8F    217            00
144    090    220            00
145    091    221            00
146    092    222            00
147    093    223            00
148    094    224            00
149    095    225            00
150    096    226            00
151    097    227            00
152    098    230            00
153    099    231            00
154    9A    232            00
155    9B    233            00
156    9C    234            00
157    9D    235            00
158    9E    236            00
159    9F    237            00
160    A0    240            00
161    A1    241            00
162    A2    242            00
163    A3    243            00
164    A4    244            00
165    A5    245            00
166    A6    246            00
167    A7    247            00
168    A8    250            00
169    A9    251            00
170    AA    252            00
171    AB    253            00
172    AC    254            00
173    AD    255            00
174    AE    256            00
175    AF    257            00
176    B0    260            00
177    B1    261            00
178    B2    262            00
179    B3    263            00
180    B4    264            00
181    B5    265            00
182    B6    266            00
183    B7    267            00
184    B8    270            00
185    B9    271            00
186    BA    272            00
187    BB    273            00
188    BC    274            00
189    BD    275            00
190    BE    276            00
191    BF    277            00
192    C0    300            00
193    C1    301            00
194    C2    302            00
195    C3    303            00
196    C4    304            00
197    C5    305            00
198    C6    306            00
199    C7    307            00
200    C8    310            00
201    C9    311            00
202    CA    312            00
203    CB    313            00
204    CC    314            00
205    CD    315            00
206    CE    316            00
207    CF    317            00
208    D0    320            00
209    D1    321            00
210    D2    322            00
211    D3    323            00
212    D4    324            00
213    D5    325            00
214    D6    326            00
215    D7    327            00
216    D8    330            00
217    D9    331            00
218    DA    332            00
219    DB    333            00
220    DC    334            00
221    DD    335            00
222    DE    336            00
223    DF    337            00
224    E0    340            00
225    E1    341            00
226    E2    342            00
227    E3    343            00
228    E4    344            00
229    E5    345            00
230    E6    346            00
231    E7    347            00
232    E8    350            00
233    E9    351            00
234    EA    352            00
235    EB    353            00
236    EC    354            00
237    ED    355            00
238    EE    356            00
239    EF    357            00
240    F0    360            00
241    F1    361            00
242    F2    362            00
243    F3    363            00
244    F4    364            00
245    F5    365            00
246    F6    366            00
247    F7    367            00
248    F8    370            00
249    F9    371            00
250    FA    372            00
251    FB    373            00
252    FC    374            00
253    FD    375            00
254    FE    376            00
255    FF    377            00
 

Attachments

  • daisy_altair_bin.txt
    256 bytes · Views: 1
  • daisry_altair_code.txt
    4.6 KB · Views: 3
Last edited:
The author is still active. Had worked for Borland so stayed fairly close to the childhood home.

I don't believe any emulator can produce the correct EM interference to be heard on a radio. Fortunately, every few years, someone rediscovers the concept so new people can experience the joyful sounds of jamming the airwaves even if the hardware is different.
 
The author is still active. Had worked for Borland so stayed fairly close to the childhood home.

I don't believe any emulator can produce the correct EM interference to be heard on a radio. Fortunately, every few years, someone rediscovers the concept so new people can experience the joyful sounds of jamming the airwaves even if the hardware is different.
The Altair Clone was confirmed to still be able to play music over an AM radio a number of years ago, so to a degree it still works. -
 
Yes, but couldn’t this be emulated in software? I.e. the hardware effect causing this could be detected and the emulator emits an audio output? Of course rf waves and interference get difficult to simulate, maybe it doesn’t have to be that super high fidelity of a model.

Anyhow I was wondering how Kurt’s submission sounded (sequence of notes) compared to the more contemporary examples.
 
Oh, geez, the very top of your post you mentioned you already knew this. Sorry.....

The fact that music is being created at all is a total hack. You would have to break down exactly how each audible tone is being generated in the complimenting circuits which is very, very ambitious to say the least.
 
In theory, an emulator could trap the pattern of instructions making sound and play a similar sound through the sound card. Does seem like a lot of work for something that would get little use. But for systems like the Altair or TI-59 with few programs that made intentional AM radio sound, it wouldn't be impossible. The TRS-80 games which had more general purpose routines broadcasting AM radio would be that much more difficult.

The modern systems I have produce so much EM over the AM band that I doubt any program could generate a distinct signal over the background noise. Weirdly, the amount of interference seems to increase when the monitor is turned off.
 
One of the first programs I wrote for my "naked" Altair was, curiously, a music program. I took the coward's way out and soldered a capacitor to the "INTE" LED and fed it into an audio amplifier. Toggle the line using one-byte EI and DI instructions. All hand-toggled via the front panel.
 
One of the first programs I wrote for my "naked" Altair was, curiously, a music program. I took the coward's way out and soldered a capacitor to the "INTE" LED and fed it into an audio amplifier. Toggle the line using one-byte EI and DI instructions. All hand-toggled via the front panel.
This is the way Processor Technology implemented their “Music System” which can provide three part (voice) output. You can see it working starting at about 3:00 into this video:


Mike
 
I recall friends being tormented by my phone calls with "Listen to this!"
I'll add that most of my mainframe co-workers were not impressed with the Altair; some thought it was a toy computer.
 
If it is easy to get to Chuck; I'd love to see a picture of your original 8800!
 
If one had "access" to a mainframe - that's far better (with over 10 years of software development of assemblers, editors, compilers, and "adv"). But personal computing was a kind of "cutting the coord" to not need to remote into a mainframe, and you get 100% use of your processor (I've read sometimes that remote comm wasn't reliable -- you'd get inconsistent performance either from whatever else users were doing on that mainframe, or dropped connection from flakey protocols; the exact same thing happens today - with "everyone" working remotely, but everyone complains how slow and unreliable the connection is {perhaps due also to extra encryption layers} - and yet, it all pays the same! ;) ).

Sure, 256-byte to 4K is pretty limited, sort of "embedded application" only territory. But once you get up to 16K or more, it's enough resources to integrate together storage IO, full screen interaction, and some useful application in your software. I think that's ultimately why BASIC ended up so popular - it was essentially the smallest/simplest "language" that could be implemented in a 2K-4K ROM -- and once BASIC had PEEK/POKE, it sort of became an assembler of sorts (I'm not sure which was the first BASIC to add PEEK/POKE -- it's not present on the IBM 5100 BASIC nor the Wang BASIC, and not sure if any of the mainframe versions had it).

I do recall overlays and chains, so you could run a larger program on a very limited system -- dynamically loading different parts of the application (like say loading in the spell check component, at the cost of unloading the interactive editing component). But I don't think anyone pulled that off using cassette tape storage -- I mean, not the audio-recorder style tape decks. Tape systems like on the IBM 5100 were more formally defined, so its software could find a "file" on the tape and chain that in (the system ROM managed FWD/RWD of the high speed tape, to find the file).


For sure, we needed those "big computers" to help prototype (e.g. via emulators) and build the small ones. And "dp" (data processing) was the main focus then, as if it was the only thing anyone would ever use a computer for. Micros have led us to quad-copter drones - flyable computers :D But geez, at the cost of a lot of software-licensing litigation.
 
I recall that my buddies at Sorcim used at least three platforms to build SuperCalc--a little VAX 11/730, a Compupro S100 85/88-equipped box and an IBM 5160. Youse use the tools what you got. :) I was offered the VAX after Sorcim sold out to CA, but by then it was a slow and expensive-to-run system in comparison with what was available in the personal computer world--so I declined.
In the early days of my Altair box, I used a Novation modem to download code that I'd written and compiled on a CDC CYBER 74. I even wrote an emulator on the CYBER to check out my code before downloading it.
 
Back
Top