KIM-1 Cassette Tapes
Revision as of 19:31, 8 March 2019 by Chrisgerlinsky (talk | contribs)
A collection at Makerspace Nanaimo of data cassette tapes for late-1970's KIM-1 microcomputers.
KIM-1
- Wikipedia: KIM-1
- MOS KIM-1 User Manual
- archive.org: The First Book of KIM
- archive.org: Byte Magazine Volume 00 Number 08 - What's New, KIM-o-sabee?
- archive.org: Byte Magazine Volume 00 Number 09 - A Date with KIM
- 6502.org page with KIM-1 links
- old-computers.com KIM-1 page
- oldcomputermuseum.com KIM-1 page
- users.telenet.be - KIM-1 manuals collection
Micro-KIM
Micro-KIM is a nearly-100%-compatible KIM-1 clone, made in 2007. (no longer sold)
- Micro-KIM at Briel Computers
- Micro-KIM Manual (PDF)
- Includes listings of the monitor program in EPROM from MOS Technology, Inc.
- 6530-003 I.C. IS AN AUDIO CASSETTE TAPE RECORDER ENTENSION OF THE BASIC KIM MONITOR
- Oct 18, 1975 Rev-D
- Includes listings of the monitor program in EPROM from MOS Technology, Inc.
- [http://forum.6502.org/viewtopic.php?f=1&t=4438 Forum thread on 6502.org - What happened to Briel Computers?
- retro.hansotten.nl Micro-KIM information and software
- http://aartbik.blogspot.com blog post about Micro-KIM
- [http://www.aartbik.com/MISC/microKIM.pdf Micro-KIM Tutorial by Aart J.C. Bik
- Solid State Tape Device for the (micro)KIM
- ns4.reboot.net.au MOS/CBM/Micro KIM-1 Rumblings
- KimStar - a Parallax Propeller connected to the bus of the 1 MHz 6502, emulating memory and IO devices
6502 utilities and information
Cassette Data Storage
Data is stored as a series of 2415 and 3623 Hz tones. The duration of one bit takes 7.452 milliseconds.
From Wikipedia:
Each bit is represented by three 2.484 ms long tones. The first is always 3700 Hz, the middle is 3700 Hz for "0" or 2400 Hz for "1", and the last one is always 2400 Hz. This gives an effective bit rate of 134.2 bit/s. Detection is done through a PLL using LM565. The format of data on the tape is: 100 bytes with the value 0x16 (SYN, Synchronous Idle), one byte with the value 0x2A (*), the record identification number, the start address (two characters for the low byte of address, two characters for the high byte), the end address (in the same format), the actual data, one byte with the value 0x2F ("/" character ), a two-byte checksum, and two bytes with the value 0x04 (EOT, End Of Transmission). Each byte of memory is stored as two sequential ASCII characters on tape, for example, hexadecimal B5 in memory (181 decimal) would be stored as two sequential ASCII characters "B" and "5" (42 and 35 hexadecimal).
Information sources:
Program: TONES A0 - Sound Effect
Source: TONES, FF, DAN OLIVER MAKES MUSIC WITH KIM COMPUTER - side 1
YouTube - TONES, FF, DAN OLIVER MAKES MUSIC WITH KIM COMPUTER.
This program starts around 1:36 into cassette tape - it's the first program stored on the tape.
Audio on the tape preceeding this program:
This is a sound effect subroutine at address 0200 to address 022C. It can be varied to go up or down in frequency in any number of repeats. Start with a jump to subroutine at address 0200. ID is A0.
Cassette tape data: TONES A0 - Sound Effect
Timestamp Binary Hex ASCII Description 0:00.055 01101000 0x16 SYN 0:00.114 01101000 0x16 SYN 0:00.173 01101000 0x16 SYN 0:00.233 01101000 0x16 SYN 0:00.292 01101000 0x16 SYN 0:00.352 01101000 0x16 SYN 0:00.411 01101000 0x16 SYN 0:00.471 01101000 0x16 SYN 0:00.530 01101000 0x16 SYN 0:00.590 01101000 0x16 SYN 0:00.649 01101000 0x16 SYN 0:00.709 01101000 0x16 SYN 0:00.768 01101000 0x16 SYN 0:00.828 01101000 0x16 SYN 0:00.887 01101000 0x16 SYN 0:00.947 01101000 0x16 SYN 0:01.006 01101000 0x16 SYN 0:01.066 01101000 0x16 SYN 0:01.125 01101000 0x16 SYN 0:01.185 01101000 0x16 SYN 0:01.244 01101000 0x16 SYN 0:01.304 01101000 0x16 SYN 0:01.363 01101000 0x16 SYN 0:01.423 01101000 0x16 SYN 0:01.482 01101000 0x16 SYN 0:01.542 01101000 0x16 SYN 0:01.601 01101000 0x16 SYN 0:01.661 01101000 0x16 SYN 0:01.720 01101000 0x16 SYN 0:01.780 01101000 0x16 SYN 0:01.839 01101000 0x16 SYN 0:01.898 01101000 0x16 SYN 0:01.957 01101000 0x16 SYN 0:02.017 01101000 0x16 SYN 0:02.077 01101000 0x16 SYN 0:02.136 01101000 0x16 SYN 0:02.195 01101000 0x16 SYN 0:02.255 01101000 0x16 SYN 0:02.314 01101000 0x16 SYN 0:02.374 01101000 0x16 SYN 0:02.434 01101000 0x16 SYN 0:02.493 01101000 0x16 SYN 0:02.553 01101000 0x16 SYN 0:02.612 01101000 0x16 SYN 0:02.672 01101000 0x16 SYN 0:02.731 01101000 0x16 SYN 0:02.790 01101000 0x16 SYN 0:02.850 01101000 0x16 SYN 0:02.909 01101000 0x16 SYN 0:02.969 01101000 0x16 SYN 0:03.028 01101000 0x16 SYN 0:03.088 01101000 0x16 SYN 0:03.147 01101000 0x16 SYN 0:03.207 01101000 0x16 SYN 0:03.266 01101000 0x16 SYN 0:03.326 01101000 0x16 SYN 0:03.385 01101000 0x16 SYN 0:03.445 01101000 0x16 SYN 0:03.504 01101000 0x16 SYN 0:03.563 01101000 0x16 SYN 0:03.623 01101000 0x16 SYN 0:03.682 01101000 0x16 SYN 0:03.742 01101000 0x16 SYN 0:03.801 01101000 0x16 SYN 0:03.861 01101000 0x16 SYN 0:03.920 01101000 0x16 SYN 0:03.980 01101000 0x16 SYN 0:04.039 01101000 0x16 SYN 0:04.099 01101000 0x16 SYN 0:04.158 01101000 0x16 SYN 0:04.218 01101000 0x16 SYN 0:04.277 01101000 0x16 SYN 0:04.337 01101000 0x16 SYN 0:04.396 01101000 0x16 SYN 0:04.455 01101000 0x16 SYN 0:04.515 01101000 0x16 SYN 0:04.574 01101000 0x16 SYN 0:04.634 01101000 0x16 SYN 0:04.693 01101000 0x16 SYN 0:04.753 01101000 0x16 SYN 0:04.812 01101000 0x16 SYN 0:04.872 01101000 0x16 SYN 0:04.932 01101000 0x16 SYN 0:04.991 01101000 0x16 SYN 0:05.050 01101000 0x16 SYN 0:05.110 01101000 0x16 SYN 0:05.169 01101000 0x16 SYN 0:05.229 01101000 0x16 SYN 0:05.288 01101000 0x16 SYN 0:05.348 01101000 0x16 SYN 0:05.407 01101000 0x16 SYN 0:05.467 01101000 0x16 SYN 0:05.526 01101000 0x16 SYN 0:05.586 01101000 0x16 SYN 0:05.645 01101000 0x16 SYN 0:05.705 01101000 0x16 SYN 0:05.764 01101000 0x16 SYN 0:05.824 01101000 0x16 SYN 0:05.883 01101000 0x16 SYN 0:05.943 01101000 0x16 SYN 0:06.002 01010100 0x2A '*' SOF 0:06.062 10000010 0x41 'A' ID1 0:06.121 00001100 0x30 '0' ID2 0:06.180 00001100 0x30 '0' START_ADDR_L1 0:06.240 00001100 0x30 '0' START_ADDR_L2 0:06.299 00001100 0x30 '0' START_ADDR_H1 0:06.359 01001100 0x32 '2' START_ADDR_H2 0:06.418 10000010 0x41 'A' END_ADDR_L1 0:06.478 00001100 0x30 '0' END_ADDR_L2 0:06.537 00001100 0x30 '0' END_ADDR_H1 0:06.597 00101100 0x34 '4' END_ADDR_H2 0:06.656 10000010 0x41 'A' DATA 0:06.716 10011100 0x39 '9' DATA 0:06.775 00001100 0x30 '0' DATA 0:06.835 00001100 0x30 '0' DATA 0:06.894 00011100 0x38 '8' DATA 0:06.954 10101100 0x35 '5' DATA 0:07.013 10100010 0x45 'E' DATA 0:07.073 10100010 0x45 'E' DATA 0:07.132 10000010 0x41 'A' DATA 0:07.192 10011100 0x39 '9' DATA 0:07.251 00001100 0x30 '0' DATA 0:07.311 10001100 0x31 '1' DATA 0:07.370 00011100 0x38 '8' DATA 0:07.430 00100010 0x44 'D' DATA 0:07.489 00001100 0x30 '0' DATA 0:07.549 01101100 0x36 '6' DATA 0:07.608 10001100 0x31 '1' DATA 0:07.668 11101100 0x37 '7' DATA 0:07.727 10000010 0x41 'A' DATA 0:07.787 10011100 0x39 '9' DATA 0:07.846 00001100 0x30 '0' DATA 0:07.905 10001100 0x31 '1' DATA 0:07.965 00011100 0x38 '8' DATA 0:08.024 00100010 0x44 'D' DATA 0:08.083 00001100 0x30 '0' DATA 0:08.143 10001100 0x31 '1' DATA 0:08.202 10001100 0x31 '1' DATA 0:08.262 11101100 0x37 '7' DATA 0:08.321 10100010 0x45 'E' DATA 0:08.381 10100010 0x45 'E' DATA 0:08.440 00001100 0x30 '0' DATA 0:08.499 00001100 0x30 '0' DATA 0:08.559 10001100 0x31 '1' DATA 0:08.619 11101100 0x37 '7' DATA 0:08.678 10000010 0x41 'A' DATA 0:08.738 01101100 0x36 '6' DATA 0:08.797 10100010 0x45 'E' DATA 0:08.857 10100010 0x45 'E' DATA 0:08.916 11000010 0x43 'C' DATA 0:08.976 10000010 0x41 'A' DATA 0:09.035 00100010 0x44 'D' DATA 0:09.094 00001100 0x30 '0' DATA 0:09.154 01100010 0x46 'F' DATA 0:09.214 00100010 0x44 'D' DATA 0:09.273 01001100 0x32 '2' DATA 0:09.332 11000010 0x43 'C' DATA 0:09.391 00001100 0x30 '0' DATA 0:09.451 11101100 0x37 '7' DATA 0:09.511 10001100 0x31 '1' DATA 0:09.570 11101100 0x37 '7' DATA 0:09.629 10001100 0x31 '1' DATA 0:09.689 00001100 0x30 '0' DATA 0:09.748 01100010 0x46 'F' DATA 0:09.807 11001100 0x33 '3' DATA 0:09.867 10100010 0x45 'E' DATA 0:09.927 01101100 0x36 '6' DATA 0:09.986 10100010 0x45 'E' DATA 0:10.045 10100010 0x45 'E' DATA 0:10.105 10000010 0x41 'A' DATA 0:10.164 10101100 0x35 '5' DATA 0:10.224 10100010 0x45 'E' DATA 0:10.283 10100010 0x45 'E' DATA 0:10.342 11000010 0x43 'C' DATA 0:10.402 10011100 0x39 '9' DATA 0:10.461 01100010 0x46 'F' DATA 0:10.521 01100010 0x46 'F' DATA 0:10.580 01100010 0x46 'F' DATA 0:10.640 00001100 0x30 '0' DATA 0:10.699 00001100 0x30 '0' DATA 0:10.758 01001100 0x32 '2' DATA 0:10.818 00100010 0x44 'D' DATA 0:10.877 00001100 0x30 '0' DATA 0:10.936 00100010 0x44 'D' DATA 0:10.996 01100010 0x46 'F' DATA 0:11.055 00011100 0x38 '8' DATA 0:11.115 00011100 0x38 '8' DATA 0:11.174 01100010 0x46 'F' DATA 0:11.233 00001100 0x30 '0' DATA 0:11.293 00001100 0x30 '0' DATA 0:11.353 01001100 0x32 '2' DATA 0:11.412 00100010 0x44 'D' DATA 0:11.471 00001100 0x30 '0' DATA 0:11.531 00100010 0x44 'D' DATA 0:11.590 10000010 0x41 'A' DATA 0:11.649 00101100 0x34 '4' DATA 0:11.709 11000010 0x43 'C' DATA 0:11.769 11110100 0x2F '/' EOF 0:11.828 01001100 0x32 '2' CSUML1 0:11.887 01001100 0x32 '2' CSUML2 0:11.947 10001100 0x31 '1' CSUMH2 0:12.006 11101100 0x37 '7' CSUMH2 0:12.066 00100000 0x04 ? EOT1 (EOT2 missing due to .wav file being cut short)
Disassembly: TONES A0 - Sound Effect
Disassembled using https://www.masswerk.at/6502/disassembler.html.
* = 0200 0200 A9 00 LDA #$00 0202 85 EE STA $EE 0204 A9 01 LDA #$01 0206 8D 06 17 STA $1706 0209 A9 01 LDA #$01 020B 8D 01 17 STA $1701 020E EE 00 17 INC $1700 0211 A6 EE LDX $EE 0213 CA DEX 0214 D0 FD BNE $0213 0216 2C 07 17 BIT $1707 0219 10 F3 BPL $020E 021B E6 EE INC $EE 021D A5 EE LDA $EE 021F C9 FF CMP #$FF 0221 F0 02 BEQ $0225 0223 D0 DF BNE $0204 0225 88 DEY 0226 F0 02 BEQ $022A 0228 D0 DA BNE $0204 022A 4C 00 00 JMP $0000 022D .END