All Projects → RhinoDevel → cbmtapepi

RhinoDevel / cbmtapepi

Licence: other
Use a Raspberry Pi as fast mass storage solution for your Commodore 8-bit computer using just the datassette port.

Programming Languages

c
50402 projects - #5 most used programming language
HTML
75241 projects
assembly
5116 projects
shell
77523 projects
C++
36643 projects - #6 most used programming language
CSS
56736 projects

Projects that are alternatives of or similar to cbmtapepi

pettil
6502 Forth-83 dialect for the Commodore PET 2001
Stars: ✭ 31 (-24.39%)
Mutual labels:  retro, commodore, pet, 6502
basicv2
A Commodore (CBM) BASIC V2 interpreter/compiler written in Java
Stars: ✭ 73 (+78.05%)
Mutual labels:  commodore, c64, 6502, vic20
c64adventures
Adventures into retro 8 bit Commodore 64 programming
Stars: ✭ 14 (-65.85%)
Mutual labels:  c64, 8-bit, 6502
cc64
cc64 is a small-C compiler written in Forth, hosted on the Commodore C64, Plus4 and C16 with 64k, and on the Commander X16. It is targeting the 6502 CPU.
Stars: ✭ 57 (+39.02%)
Mutual labels:  c64, 6502, cbm
apultra
Free open-source compressor for apLib with 5-7% better ratios
Stars: ✭ 84 (+104.88%)
Mutual labels:  c64, 8-bit, 6502
atari64
Commodore 64 OS running on Atari 8-bit hardware
Stars: ✭ 133 (+224.39%)
Mutual labels:  c64, 6502, cbm
6502.Net
A .Net-based Cross-Assembler for Several 8-Bit Microprocessors
Stars: ✭ 44 (+7.32%)
Mutual labels:  8-bit, 6502, vic20
retro-computing
🤓🕹💾 This hobby project contains software implementations of old microprocessors and complete computer systems. I'm very interested in retrocomputing and this is how I learn about the inner workings of these old, classic and amazing computers and game consoles.
Stars: ✭ 15 (-63.41%)
Mutual labels:  commodore, c64, 6502
6502-emulator
An Understandable 6502 Emulator
Stars: ✭ 26 (-36.59%)
Mutual labels:  retro, 6502, vintage
Mad-Pascal
Mad Pascal Compiler for 6502 (Atari XE/XL, C64, C4Plus)
Stars: ✭ 46 (+12.2%)
Mutual labels:  c64, 8-bit, 6502
Pi1541io
Raspberry Pi extension board for the PI1541 project.
Stars: ✭ 69 (+68.29%)
Mutual labels:  commodore, c64
encounter
Remaking the classic C64 game in WebGL.
Stars: ✭ 45 (+9.76%)
Mutual labels:  retro, c64
TommyGun
A retro development IDE for the creation of games on 8-bit computers.
Stars: ✭ 37 (-9.76%)
Mutual labels:  retro, c64
retrore
A curated list of original and reverse-engineered vintage 6502 game sourcecode.
Stars: ✭ 22 (-46.34%)
Mutual labels:  c64, 6502
64tass
64tass - cross assembler for 6502 etc. microprocessors - by soci/singular - [git clone from the original sourceforge repo]
Stars: ✭ 19 (-53.66%)
Mutual labels:  retro, c64
vchar64
editor for the Commodore 64
Stars: ✭ 81 (+97.56%)
Mutual labels:  commodore, c64
jsfxr
JavaScript sound effects generator.
Stars: ✭ 120 (+192.68%)
Mutual labels:  retro, 8-bit
Pi1541-HAT
A HAT for the Raspberry Pi, that allows to emulate the Commodore C64 floppy disk drive 1541. Switches and IEC-Bus detachable.
Stars: ✭ 26 (-36.59%)
Mutual labels:  commodore, c64
salvador
A free, open-source compressor for the ZX0 format
Stars: ✭ 35 (-14.63%)
Mutual labels:  c64, 8-bit
C64-WiFi-Modem-User-Port
A NodeMCU (ESP8266) based WiFi modem for the C64's user port
Stars: ✭ 49 (+19.51%)
Mutual labels:  commodore, c64

This is not a release version of the README! Please follow this link to get to the README of CBM Tape Pi's latest stable release version (v1.7.0).

CBM Tape Pi

Marcel Timm, RhinoDevel, 2021, rhinodevel.com

CBM Tape Pi hardware

Use a Raspberry Pi as fast storage device with your Commodore 8-bit computer (CBM/PET, VIC 20, C64, etc.) via tape port connector!

The main goal was to provide such a solution for the CBM/PET machines with as less hardware effort as possible while using Open Source software, the Raspberry Pi and the Commodore's datassette port, only.

Features

  • Access Pi's SD card from your Commodore to:

    • Load PRGs.
    • Save PRGs.
    • Traverse directories.
    • List current directory's content.
    • Delete files.
    • Fast mode via wedge for CBM/PET, VIC 20 and C64.
    • Compatibility mode for all machines listed above and maybe more (C16, etc. - untested).
  • Easy to build hardware interface:

    • No ICs, just a minimum amount of discrete components.
    • Only five connections need to be soldered (wires on the tape port plug).

Requirements

You need:

  • Some cables (not that many, if you want to solder).
  • 1x breadboard (if you do not want to solder) or a circuit board. Alternative use a PCB via Sven Petersen's layout!
  • 1x LED.
  • 3x NPN transistor (e.g. a BC547 or a PN2222A).
  • 1x PNP transistor (e.g. a BC557).
  • 10x 10k Ohm resistors (two of these are used to get a 20k Ohm resistor). Optionally replace R1 (LED series resistor) with a lower value resistor to let the LED burn brighter.
  • 1x Commodore cassette port plug.
  • 1x Raspberry Pi 1, 2, 3 or Zero (other models may also work, not tested, yet).
  • 1x SD card supported by your Raspberry Pi.
  • Optional: A push button (to be able to soft-reset the Raspberry Pi).

Warning and disclaimer

  • When using CBM Tape Pi, don't toggle the Commodore datassette connector ports that are (by Commodore default) used as inputs into output mode and vice versa (e.g. via POKEs), because that can cause damage to your Raspberry Pi or even to your precious Commodore (this is nothing special, it should also never be done, if a real datassette device is attached)!
  • I take no responsibility for any damage caused by using CBM Tape Pi. But: I am sure that, if you follow this README and make no mistakes, there will be no damage.

Preparations

  1. Setup connections (see picture below).
  2. Put compiled kernel.img (or kernel7.img for Raspberry Pi 2 and 3) from latest release v1.7.0 on the first FAT32 partition on an SD card with MBR partition table (easiest way is to use an SD card having Raspbian installed).
  3. Delete (if existing) config.txt and cmdline.txt from boot partition.
  4. Overwrite fixup.dat, start.elf and bootcode.bin with the files having the same names from Raspberry Pi firmware release 1.20171029.

The LEDs

  • The Pi's ACT LED will flash every second to show that CBM Tape Pi is running.
  • The interface's LED will be on, if waiting for commands.
  • The interface's LED will be off during transfer of a PRG to Commodore.
  • The interface's LED will flash to indicate an error that occurred during last command execution (e.g. file not found), but it will still wait for the next command from the Commodore.

How to use CBM Tape Pi

  1. (Always) power-on Raspberry Pi first.
  2. Power-on Commodore.
  3. Enter commands (see below for details).
  4. (Always) power-off Commodore first.
  5. Power-off Raspberry Pi.

Do not power-off the Raspberry Pi while Commodore machine is still on.

If you need to reset the Raspberry Pi, I recommend to also first power-off the Commodore, although keeping the Commodore running during Raspberry Pi reset should do no harm.

How to enter and use fast mode

After the first start of CBM Tape Pi it is in (slow) compatibility mode (see below).

You can toggle to another mode from compatibility mode this way:

  1. Enter SAVE"MODE <mode name>" where you replace <mode name> with one of the following strings:
  • PET1: CBM/PET, BASIC v1, fast mode, wedge installed in tape buffers.
  • PET2: CBM/PET, BASIC v2, fast mode, wedge installed in tape buffers.
  • PET4: CBM/PET, BASIC v4, fast mode, wedge installed in tape buffers.
  • PET1TOM: CBM/PET, BASIC v1, fast mode, wedge installed at top of BASIC memory.
  • PET2TOM: CBM/PET, BASIC v2, fast mode, wedge installed at top of BASIC memory.
  • PET4TOM: CBM/PET, BASIC v4, fast mode, wedge installed at top of BASIC memory.
  • VIC20: VIC 20, fast mode, wedge installed at top of BASIC memory.
  • C64: C64, fast mode, wedge installed at top of free high memory (right before address $D000).
  • C64TOM: C64, fast mode, wedge installed at top of BASIC memory.
  1. Power-off Commodore.
  2. Reset Raspberry Pi.
  3. Power-on Commodore.
  4. Enter LOAD.
  5. Follow start instruction shown at Commodore (as file name) to install wedge, e.g. RUN or SYS 655.
  • If RUN is shown, using <shift> + <run/stop> instead of LOAD followed by RUN would also have worked.

You have reached fast mode!

Feel free to enter all commands described below for compatibility mode, but now use ! character followed by command (instead of using SAVE and LOAD). E.g. to load a PRG: !MYCBMAPP.PRG

Hint: Change the mode when fast mode is active:

  • Enter !MODE <mode name> to let the Pi be in another mode from the next start on.
  • Switch back to compatibility mode with !MODE SAVE.

How to use compatibility mode

  • The commands to the Pi will be send via Commodore SAVE command (no need for a wedge).

  • If you have a (big) PRG loaded in memory, consider executing NEW before SAVE, to avoid that the PRG will unnecessarily be sent to the Pi.

  • Hint: The same commands described below are used in fast mode. Just enter the ! character followed by the command (instead of using SAVE and LOAD). E.g. to load the directory contents in fast mode enter: !$

  • LOAD: E.g. a PRG file named mycbmapp.prg:

        SAVE"MYCBMAPP.PRG":LOAD
        RUN
    

    For non-relocatable (non-BASIC) PRGs on a VIC 20 or a more recent machine (e.g. a C64):

        SAVE"MYCBMAPP.PRG":LOAD,1,1
        ...
    
  • SAVE: E.g. a PRG file named mynewapp:

        SAVE"+MYNEWAPP"
    
  • LIST: List content of current directory:

        SAVE"$":LOAD
        RUN
    
  • CD: Change directory, e.g. to subfolder named "petprgs":

        SAVE"CD PETPRGS"
    

    To return from a subfolder type:

        SAVE"CD .."
    
  • RM: Remove a file, e.g. the file named "oldfile.prg":

        SAVE"RM OLDFILE.PRG"
    
  • MODE: Toggle mode (also see options, above), e.g. to CBM/PET BASIC v4 fast mode:

        SAVE"MODE PET4"
    

Connections

Connect Raspberry Pi and Commodore machine this way: Wiring

Supported Commodore machines

  • CBM/PET computers (tested with BASIC v1, v2 & v4 on a 2001 and a 3032, tested with BASIC v4 on an 8032-SK).
  • VIC 20.
  • C64.
  • Other Commodore computers with tape interface (C16, etc. - not tested, yet).

Supported Raspberry Pis

  • Raspberry Pi 1 (successfully tested with Pi 1 Model B).
  • Raspberry Pi 2 (successfully tested with Pi 2 Model B v1.1).
  • Raspberry Pi 3 (successfully tested with Pi 3 Model B v1.2).
  • Raspberry Pi Zero (successfully tested with Pi Zero W v1.1).
  • Other Raspberry Pis (not tested, yet).

Next project goals

  • Optionally use datassette port 2 on CBM/PET machines.
  • Support loading PRG files with filenames longer than 12 characters.
  • List directory content without erasing possibly existing PRG in memory when using fast mode.
  • Show destination memory addresses and sizes of PRG files in directory listing.
  • Increase loading speed for fast mode wedges, if top-of-memory shall be used.
  • Show a result text on Commodore machine for at least some commands in fast mode.
  • Read/write from/to tape storage files like TAP, etc.
  • Read/write from/to USB storage device.
  • New command: "md" to create a folder.
  • Automatically create a folder (if missing) and use it as "root" (e.g. "CBMTAPEPI").
  • (Raspbian) Linux port of CBM Tape Pi, see Linux README.

RhinoDevel

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].