ARP's Digital Experiments - DCO 2600

I’m looking for places that would be interested in some historic information from ARP. I’m 100% sure this information is not anywhere on the internet. Please don’t get the idea that I’m trying to sell anything. I just want to make this information available to other people.

I have not had the chance to completely go through all of the data, but it appears that by 2/7/77 ARP had a synth with at least a DCO. Its possible that they had a completely digital synth too. This software and computer/boards came from an ARP employee. This machine was built on the Altair 8800 computer.

I have a binder full of compter code and handwritten notes from ARP Instruments. FedEx just dropped off a few disks with what appears to be a backup of their project. I also have some S-100 BUS interface cards for the Altair that appear to interface the Altair to an ARP synth.

I’m looking for places that might want this information. If this is the right place, let me know. If not, could someone give me pointers to ARP archive web sites?

This stuff excites me even though I have no idea what a 2600, prophet, moog, etc is. Its a time capsule to me. :wink: All I know about these old synths is that Popcorn song they made me dance to in elementary school. :wink:

Below is a short timeline written by the employee:

ARP filed Chapter 11 around 1981. I was working with
them at the time as a hardware engineer. Alan Pearlman
and I were working together. I remember he was into
computer graphics when I was there. I think he used
the Altair prior to my arrival (1979) and was experimenting
with computer music. At that time, ARP only produced
pure analog synths. It wasn’t until about 1980 that they
introduced their first microcomputer controlled analog
synth (the Quadra). We were working on the Chroma,
a much more substantial micro-controlled analog synth
to compete with the Sequential Circuits Prophet 5, but
we didn’t finish it before the company ran into
trouble. The designs, inventory, etc. were purchased
by Fender and I continued work on this synth at a different
lab location in MA, which finally was released as the
Rhodes Chroma.

I have a couple of 8" floppies for the Altair
containing what appears to be Alan’s computer music
generation software. About that time, UCSD had a vibrant
computer music degree program at their Center for Music
Experiment. This was about the time Stanford and Ircam
had vibrant computer music programs. Anyway, the UCSD
Music 5 generation programs were public domain. Perhaps
he was experimenting with them. Of course, he could have
been working on a keyboard sequencer/recorder for analog
synths as well.

Anyway, since I don’t have any way to read these disks
and you might, I would be willing to send them to you
temporarily so that you could read the data off of them,
as long as you give me a copy of the data in a format I can
use (i.e. email the binary files to me) as well as return
the original disks back to me. Let me know if you have
the floppy drive system working yet.

http://www.synthmuseum.com/ ?

Much more where this came from…

0000 org 03fah 
0010 jmp evcod 
0100 org 0067h 
0110 ************************************************************** 
0120 * 
0130 * Module EVCOD 
0140 * 
0150 * Written by Bruce Cichowlas 8/25/76 
0160 * Copyright Circle C - ARP Instruments 9/18/76 
0170 * 
0180 * EVCOD - evaluates preset code by table lookup 
0190 * 
0200 * C contains input code on entry 
0210 * A has answer (-1 indicates invalid code) 
0220 * 
0230 ************************************************************* 
1000 evcod equ $ 
1010 push h 
1020 lxi h,cdtab ;code table 
1030 evco1 mov a,m 
1040 inx h 
1050 inx h 
1060 cmp c 
1070 jz evco2 
1080 cpi -1 ;indicates end of table 
1090 jnz evco1 
1100 mvi a,-1 ;return invalid indication 
1110 pop h 
1120 ret 
1130 evco2 dcx h ;rr back up one 
1140 mov a,m 
1150 pop h 
1160 ret 
1170 cdtab dw 0101h 
1180 dw 0202h 
1190 dw 0304h 
1200 dw 0408h 
1210 dw 0510h 
1220 dw 0620h 
1230 dw 0040h 
1240 dw 0703h 
1250 dw 0806h 
1260 dw 090ch 
1270 dw 0a18h 
1280 dw 0b30h 
1290 dw 0c60h 
1300 dw 0ffffh 
9999 *END



0000 org 03fdh 
0010 jmp presc 
0100 org 0040h 
0110 ************************************************************** 
0120 * 
0130 * Module PRESC 
0140 * 
0150 * Written by Bruce Cichowlas 8/25/76 
0160 * Copyright Circle C - ARP Instruments 9/15/76 
0170 * 
0180 * PRESC - checks the preset panel and sets the previous 
0190 * preset reading (prvpr), as well as the preset request 
0200 * word (prerq). This routine should be invoked frequently, 
0210 * as it actually does the preset panel scanning. 
0220 * 
0230 * No arguments 
0240 * 
0250 ************************************************************** 
1000 presc equ $ 
1010 push b 
1020 lda ppadr ;preset panel addr 
1030 ora a ;set flags 
1040 jz pres1 ;none set 
1050 mov b,a 
1060 lda prvpr ;load previous reading 
1070 ora b 
1080 sta prvpr 
1090 pres2 pop b 
1100 ret 
1110 pres1 lda prvpr ;find out if any were set previously 
1120 ora a 
1130 jz pres2 ;none before 
1140 mov b,a 
1150 lda prerq 
1160 ora b ;include bits set in b 
1170 sta prerq 
1180 xra 
1190 sta prvpr ;store 0 for the previous reading 
1200 pop b 
1210 ret 
5000 ppadr equ 1800h 
6000 *RAM 
6001 prvpr equ 08ffh 
6002 prerq equ 08feh

0000 org 03e8h 
0001 jmp rdsld 
0002 jmp clman 
0003 jmp nmmsk 
0004 jmp msknm 
0005 jmp swpnl 
0006 jmp clsw 
0100 org 009bh 
0110 ****************************************************************** 
0120 * 
0130 * Written by Bruce Cichowlas 9/3/76 
0140 * Copyright Circle C - ARP Instruments 9/16/76 
0150 * 
0160 * CLSW - clears all switches. No arguments. 
0170 * SWPNL - sets the switches from the scratchpad. Just 
0190 * one byte of them for now. No arguments. 
0200 * 
0210 * MSKNM - Converts a one bit mask to a number from zero 
0220 * to seven indicating bit position, e.g. 01h becomes 0, 
0230 * 80h becomes seven. Input and output are from the A register. 
0240 * 
0250 * NMMSK - Performs the inverse operation of MSKNM. 
0260 * 
0270 * CLMAN - Clears the manual lights for the slidepots. No 
0280 * arguments 
0290 * 
0300 * RDSLD - Reads a slidepot. On input, A contains 
0310 * the slidepot number, and on return it contains the 
0320 * slidepot's current value. 
0330 * 
0340 ******************************************************************** 
1000 clsw equ $ 
1010 sta swclr 
1020 ret 
1030 swpnl equ $ 
1040 push h 
1050 push d 
1060 lhld prbas ;base of scratchpad 
1070 lda slcnt ;slide count 
1080 mov e,a 
1090 mvi d‰,0 
H 
1100 dad d ;calculate address of switch values in the scratchpad 
1110 mov a,m ;get word 
1120 cma ;since switches use negative logic 
1130 sta setsw ;set the switches 
1140 pop d 
1150 pop h 
1160 ret 
1170 msknm equ $ 
1180 push b 
1190 mvi b,7 
1200 mskn1 rlc 
1210 jc mskn2 
1220 dcr b 
1230 jnz mskn1 
1240 mskn2 mov a,b 
1250 pop b 
1260 ret 
1270 nmmsk equ $ 
1280 push b 
1290 mov b,a 
1300 mvi a,1 
1310 inr b 
1320 nmms1 dcr b 
1330 jz nmms2 
1340 rlc 
1350 jmp nmms1 
1360 nmms2 pop b 
1370 ret 
1380 clman equ $ 
1390 push b 
1400 push d 
1410 push h 
1420 lda slcnt ;slide count 
1430 dcr a ;convert to offset 
1440 clma1 push m 
1450 lhld lgbas ;man/auto light copy base 
1460 call wrdbt ;get wrdbt offset 
1470 xra a ;for reset 
1480 call setwb ; adjust bit 
1490 lxi h,lgdev ; light device 
1500 mov e,b 
1510 mvi d,0 
1520 dad d 
1530 mov m,a ;store new value 
1540 pop m 
1550 dcr a 
1560 jp clma1 
1570 pop h 
1580 pop d 
1590 pop b 
1600 ret 
1610 rdsld equ $ 
1620 sta mxadr ;slidepot's MUX addr 
1630 nop ;wait for MUX to settle 
1640 nop 
1650 sta strtc ;start conversion 
1660 mvi a,6 
1670 rdsl1 dcr a ;delay 
1680 jnz rdsl1 
1690 lda adout ;get a/d value 
1700 ret 
7000 *ROM parameter table 
7001 prbas equ 0400h ;base of scratchpad 
7002 slcnt equ 0402h ;slide pot count 
7003 lgbas equ 0403h ;man/auto light copy base 
8000 *Device addresses 
8001 swclr equ 3003h ;store to this location clears the switch settings 
8002 setsw equ 3004h ;store to this setting stores the complement of the 
8003 * ;input into the switches 
8004 mx88adr equ 3000h ;store to here sets the MUX slidepot address 
8005 strtc equ 3002h ;store to here starts the conversion 
8006 adout equ 3000h ;this is where the a/d output is put 
8007 lgdev equ 3001h ;store to here sets the man/auto lights 
9000 *Subroutine 
9001 wrdbt equ 03e5h 
9002 setwb equ 03e2h 
equ bins 
6060 * 
8000 swtch equ 01800h 
9000 sortn equ 03f4h 
9010 bncnt equ 03e