Jump to content
IGNORED

Using magnetic tape


LX.NET

Recommended Posts

Hi All,

 

Wondered about the following: would it be possible to use the magnetic tape drive features of the Lynx for some purpose?

Some facts I gathered today:

 

  • Pin 28 (TAPE1) and Pin 29 (TAPE0) of the Mikey chip are present (although they are connected to ground)
  • The timers 1, 3, 5 and 7 refer to Mag0a, Mag0b, Mag1a and Mag1b respectively
  • Addresses FD84 (MAGRDY0) and FD85 (MAGRDY1) appear to offer a 7th bit to signal "Mag tape ready" for the channels 0 and 1. The bit is reset on read.
  • The addresses of the
    • FD04 = TIM1BKUP MAGA
    • FD0C = TIM3BKUP MAGB
    • FD14 = TIM5BKUP MAGC
    • FD1C = TIM7BKUP MAGD
  • The addresses for timer static controls (TIMXCTLA, where X is 1, 3, 5 or 7) refer to magmode with bit $20.
    "Unused in timers 0,2,4,6 / Magmode in timers 1,3,5,7 $20 ..1....."
  • The documentation says: "The circuit for reading magnetic tape is in Mikey. However the Mikey ROM does not currently activate the tape mode. When the decision is made, the ROM may have to be changed. The alternative would be to use an external ROM that would activate the tape circuits."
  • "The other 5 timers are for general software use. POOF. See the mag tape description."
  • Pin 9 is MOTORON and is referred to from FD87 (SYSCTL1)
    "FD87 = SYSCTL1.Control Bits.(W)
    reset x,x,x,x,x,x,1,0
    B1=power (1 = on)
    B0= Cart Address Strobe (also counter reset) (was MotorOn)
    "
  • Older chipsets might be needed. From the Epyx Development Kit source files, it mentions in harddefs.i in version 1.2 and 1.3 of the kit that magnetic tape related definitions have been removed.
    Version 1.1 (in text file Release_1.1)
    "The following files have been removed, and should no longer be
    referenced by your code:
    6502:include/aio2defs.i
    6502:include/io32defs.i
    6502:include/sys.i
    6502:include/tapedeck.i
    6502:macros/tapedeck.mac
    6502:src/controls.src
    6502:src/handymath.src
    6502:src/sprite.src
    6502:src/tapedeck.src
    "

    Version 1.2:
    "6502:include/harddefs.i - Removed MAGRDYx definitions
    (MAGTAPE features are removed from new chips)
    Added new stereo hardware definitions
    "
    Version 1.3:
    "6502:include/harddefs.i - removed the MAGxx names for timers
    added READ_ENABLE bit definition for IODAT
    "

    harddefs.i change log:
    "* 7-Mar-90 SHL Removed MAGRDYx definitions"
    "* 27-Jun-90 SHL Removed MAGxx alternate names for timers"
  • Epyx Development Kit refers to:
    * 2 Jan 89 -RJ Added TAPE_RECORDING definition and examples
    * of calling tape-recording macros

Since most magnetic tape references have been removed around early 1990 (release 1.1 on 27-2-1990, release 1.2a in 29-3-1990, Release 1.3.3 in 28-6-1990), and the Lynx was released on September 1st, 1989 it might be that the hardware was changed after release of the first Lynx 1 devices.

 

Anyway, any ideas and opinions are welcome.

 

Sources;

  1. http://www.monlynx.de/lynx/hardware.html
  2. https://atariage.com/Lynx/archives/schematics/Schematic_Lynx_UL_High.html
  3. Epyx Development Kit source code files
  4. http://atariage.com/forums/topic/140352-curious-statement-about-lynx-on-wikipedia/?hl=%2Bmagnetic&do=findComment&comment=1702760
Link to comment
Share on other sites

The sequential reading of bytes from the cart already mimics the magnetic tape. Same with the homebrew eeprom hacks. I am really glad they ditched the physical magnetic tape. Just think about the frustration in rewinding the tape to read in the next graphics in the middle of a game ;)

 

Today there is all kind of powerful serial interfaces like I2C with a clock and data pins. Or SPI with CLK, MISO, MOSI pins. I have connected LED strips to some cart pins in order to see if it would be possible to control external equipment with the Lynx. It works, sort of.

 

It might be interesting to see if the timer inputs or outputs could be seen on any Mikey pins. Perhaps RJ would know.

Link to comment
Share on other sites

I am really glad they ditched the physical magnetic tape. Just think about the frustration in rewinding the tape to read in the next graphics in the middle of a game ;)

 

Lol :D I was also glad to get rid of C cassettes for decades, but I've gotten nostalgic about them again. It's fun to see people playing their own music from tape on old colorful cassette players from the 80s. I recently got myself this one (because ebay has been cleaned up from nice looking 'boom boxes', at least those with line-in, and they're horribly expensive). https://cdn5.elektronik-star.de/out/pictures/generated/product/5/700_700_75/10030562_yy_0004_variante___auna_Duke_Retro_Boombox_tragbarer_Kasettenplayer.jpg

 

Also I'm really into tape loading on the c64, the tape loaders with a loader image and loader music are really, quoting Nostalgia Nerd - 'Superior to any technology of today' ;D

 

All joking aside, there's the obvious downsides to tape, but there could possibly be some sense in using them: Small 'one load' games that fit into ram would probably load reasonably fast. It can be fun (it is fun!). C Cassettes are still produced and they're cheap. Not that you didn't already made it cheap and easy to produce real carts for the Lynx Karri (thanks)!

 

The biggest issue would be that most people probably have thrown away their tape players by now, and I'm not sure if you'd need some sort of 'proper' tape player designed for use with computers, I mean audio is audio, but there's all the azimuth tape head alignment and volume issues.

Edited by Turbo Laser Lynx
Link to comment
Share on other sites

Tapes are nostalgic. But you could as well make a Bluetooth dongle for streaming in data. Shorter rewind times.

 

The Lynx has already had the BLL loader for streaming in anything through ComLynx. I used it a lot with many homebrew carts for testing my own creations on a real Lynx. But today the fastest way for me is to just plug in an empty flash cart and burn the lnx image on it. This is also the best option as I am using eeprom's to store progress in my current, amazing, 30 years Lynx birthday game to be released in September.

Link to comment
Share on other sites

Yeah, I remember testing my own games on a real Lynx with your oldest flashcart over comlynx, it was quite slow and painful in comparison to what we have now, especially if/when there were some bugs and you'd have to do it over and over. I always did like the 'tape-loading-like' flashing screen though :) Tapes are only good for when having dedicated time for 'maximum' nostalgia feeling. I do the same on the Lynx, if I play something 'casually' I use the flash cart, but when I sometimes have the time to plan in a 'Lynx gaming night' I use the old 'real carts' for the feeling. :) Obviously most of the time convenience is the deciding factor.

Edited by Turbo Laser Lynx
Link to comment
Share on other sites

Actually magnetic tape has a frequency response of 30Hz to 15kHz. The speed 62.5 bps would at least require 32kHz. Or some clever modulation that can store more. In any case using tape is not trivial at these speeds.

 

The first tape systems were running at 110 bps or 300 bps back in time. Usually using modem techniques of two frequencies alternating for sending bit zero or bit one.

Edited by karri
Link to comment
Share on other sites

Yes, I had to check up some numbers and I found this on Lemon64. So it seems the standard tape loading on a c64 is ~415 bits/s and a common turbo ~4320 bits/s. So 'ram only' games would take a little while to load even with 'turbo speeds'. It is quite slow when looking at the numbers :D

 

 

Quick empirical experiment:

manic_miner.prg ; 38390 bytes

Save to .tap using a) plain CBM ROM loader, b) Turbo 250.

a) rough layout and timings:

pilot 10.5 sec
header first 1.9 sec
header repeat 1.9 sec
pause 0.3 sec
pilot 2.0 sec
data first 6 min 1.3 sec
data repeat 6 min 1.3 sec

--> total time for loading a 38388 byte program: 12:19.339.
--> effective data rate: 51.9221 bytes/sec = 415.3764 prg data bits per sec.

b) rough layout and timings:

pilot 2.2 sec
header 0.4 sec
pilot 0.9 sec
data 1 min 11.5 sec (including trailer)

--> total time for loading a 38388 byte program: 1:15.007
--> effective data rate: 511.7922 bytes/sec = 4094.3379 prg data bits per sec.

Then ignoring all pilots, headers, trailers, sync trains, etc, and looking at EXACTLY the data representing EXACTLY 38388 bytes (note that I ran TAPClean before this step, and apparently that made the ROM loader parts slightly slower...):

a) 38388 bytes in 6:09.081 = 104.0097 bytes/sec = 832.0775 prg data bits per sec.

b) 38388 bytes in 1:11.076 = 540.0979 bytes/sec = 4320.7834 bits per sec.

Hmm .. Really? I had expected slightly lower numbers for Turbo 250 ... icon_razz.gif Maybe there just happened to be lots of 0-bits in this particular game ... icon_biggrin.gif

 

According to this page: https://obsoletemedia.org/compact-cassette-data/

"A rate of 2000 bit/s equates to a capacity of around 660 KB per side of a 90-minute tape."

I guess that would mean ~2,5Mb on a 90min C cassette at ~4000 bps.

Edited by Turbo Laser Lynx
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...