Jump to content
IGNORED

RCA Studio II GOLD MINE! An interview with the Studio 2 Production Manager!


Recommended Posts

3 hours ago, etxmato said:

Yes the Studio IV BASIC is rather slow. One reason for it being slow is that it is written in a pseudo code language, similar set-up as the Chip8. The same BASIC was released for the VIP as the VP700 Tiny BASIC. Both use the same pseudo code (more or less) but interpreters have some larger differences. So the fact that it is not really coded in 1802 code makes it that much slower.

I'm not sure you can fully explain its speed by that.  TI BASIC on the TI-99/4A is itself written in an interpreted pseudo-code, and has to access all of BASIC memory through a 1 byte pinhole on the VDP.  Furthermore, it's a floating point BASIC with 8-byte Radix-100 floating point.  And yet, it's about 50× faster than this.  (At least, comparing 22 seconds to 995 seconds.)

 

The ECS BASIC @carlsson compared it to is very slow (203 seconds, almost 10× the TI-99/4A), in part because it excessively synchronizes with the vertical retrace interrupt.  For 2 frames out of N (where N is usually 3), the interpreter is completely paused.  Even after I optimized the ECS BASIC interpreter and math routines, I could only speed it up about 20%, due to losing so many cycles waiting for the EXEC synchro.

 

This Tiny BASIC is 5 times slower than that, it seems.  It's slow enough that it seems to execute about one BASIC token per display refresh, or something close to that.  This may also partly why there are some performance differences between PAL and NTSC.

 

Perhaps there's a misguided SYNC / DO SYNC in the main interpreter loop (leftover debug code)?  Or maybe it's looking for a "break" key between each token, but waiting for a full debounce interval for no good reason?

 

I can understand a slowdown due to double-interpretation.  This seems like a bit much, though.  :-D

  • Like 1
Link to comment
Share on other sites

Hi Anders, intvnut,

 

The Studio IV needs a lot of CPU power to do the screen update. Both the Pixie chip used in the VIP and the Studio IV video are very basic, or in other words the 1802 does most of the work. This leaves a lot less processing power for the the 'rest' of the code. 

 

Anyway, glad to see my NTSC 2020 version has the same speed as the 1978 one :). 

 

The reason why my 2020 PAL version runs so much slower is only caused by the video routines. There are no other differences.

 

The Studio video needs to be updated with a frequency of 50 Hz on PAL. On every update the complete video memory (1K) will be outputted via DMA out instructions. On NTSC (60 Hz) every byte is outputted twice (total of 2K DMA outs) and on a PAL every byte is done 3 times (total of 3K DMA outs). This as we have more lines to show on a PAL system. Besides the 3K DMA outs instructions there is additional 'overhead'; to get the output timed it also delays at every horizontal sync. This is another 6 instruction for every line, i.e. every 16 DMAs. These 6 instructions are actually needed/used to make sure lines are repeated twice or three times depending on PAL/NTSC systems. So we are actually doing 22 instructions per visible line, every vertical sync, meaning PAL: 64*3*22=4224, NTSC 64*2*22=2816 instructions needed for every vsync. I think on a PAL system that leaves about 1500+ instructions for regular code :(.

 

The 1978 version is an NTSC version, so yes you can run it on a PAL emulation but the video output will in that case use the same amount of lines as the NTSC mode.

 

Maybe also worth noting is that the 1802 uses 16 clock cycles per CPU instruction (at leats on a pixie system, other systems 16 or 24). 

 

And as said before on all of this we have an interpreter running the BASIC interpreter...

 

TI is a timer, 1 = 1/60 of a second. So TI=300 sets a 5 seconds timer. Didn't actually test that on Emma 02 but would be a good test to see if I got it right :). I expect a PAL will do 1/50 of a second.

 

To use this you need something like

 

10 TI=300

20 X=TI

30 IF TI>0 THEN 30

 

FQ sets the tone generator frequency, but this is for the VP-595 simple sound board; not sure if it does anything on the Studio. TO generates the tone, so TO=180 should create a tone of 3 seconds. Again not sure it does anything on a Studio, would need to check.

 

Not sure about the BASIC manual, will check and let you know....

 

Cheers, Marcel.

  • Thanks 2
Link to comment
Share on other sites

Hi Anders,

 

I got a scan of the VIP Tiny BASIC manual from Ed Keefe; thanks Ed!

 

As mentioned Studio IV BASIC is more or less the same however has a higher video resolution and is of course missing the Simple sound board.

 

Have fun!

If the speed is a problem for you, you can always give it a bit higher CPU frequency in Emma 02 ;).

 

Cheers, Marcel.

VIP Tiny Basic - Instruction Manual - VP700.pdf

  • Thanks 1
Link to comment
Share on other sites

Cool! I didn't realize that COLOR could paint blocks of the screen or that it had PRINT AT. Out of the reserved keywords, the only one I can't find in the manual is ON, unless it is reserved due to TVON.

 

It leads me to wanting to see if BASIC is any faster with TVOFF, or do you still need to send all that DMA data on every frame?

Link to comment
Share on other sites

Oh yes! My test program got roughly 100% speedup after turning off the screen! I hand timed 10 iterations (1978 version NTSC) to 6.5 seconds with the screen on and about 3 seconds with the screen off.

 

Not useful for action games of course, but something that does a lot of calculations really would benefit from turning off the display.

Edited by carlsson
Link to comment
Share on other sites

  • 3 weeks later...
  • 8 months later...

Anyone have a non-function studio II motherboard from which I can get ROMs?   I'm trying to fix a console and only 3 of 5 built-in programs work.   Bowling crashes and Freeway starts then crashes.   The two doodles and Addition and all carts work fine.  I plan to socket the ROMs and document as I proceed.  thx.

Link to comment
Share on other sites

  • 2 months later...

Hi all,

 

Sad news that was posted on the CosmacElf group: Ed Keefe suddenly passed away on Sat Feb 5. Ed was quite active in this group and a great source of info on the 1802 CPU and all related things. His website (www.cosmacvip.com) is a goldmine for Cosmac and Studio II info and he helped out with the initial multicart hardware. He was always ready to help and I will miss his input and wisdom... RIP @ekeefe

 

FliP

  • Sad 6
Link to comment
Share on other sites

Oh no. That’s awful news. Ed was great in all my interactions with him - I provided him with photos of the VIP II schematics I found at Hagley Library, which he was thrilled by. He in turn provided me with a video recording of a one-of-a-kind VIP demo he got from a former staffer and typed in a VIP game for me to record footage of that I couldn’t find a binary for. Just a great guy all around.

 

My dream would be to see his materials show up as an Ed Keefe collection at the Strong Museum or something. I think he’s been instrumental enough with our efforts to understand and preserve RCA’s history that he deserves that honor.

Edited by ubersaurus
  • Like 4
Link to comment
Share on other sites

I never thought that I'd regret reading an update in this thread but learning that Ed passed away suddenly is absolutely horrible news. He was one of very few truly irreplaceable sources of knowledge for any platform, and unless he wrote down every single thing he knew much perspective and insight is now gone forever. He wasn't really that old, though he had been into the RCA and related systems since he was very young and I figured he would be one of the last of the "original" generation of their users to be around, and that he'd still be with us for many, many years to come. 

 

We had several very enjoyable and hours-long phone calls and email chains, and not just about RCA. It isn't just that he was one of a kind, though- so much of what he had collected and preserved is also unique. He did once indicate that he had taken steps to ensure that should anything to him that his treasures were documented would be properly shared and donated, but didn't go into specifics. I really hope that the community will (if they haven't already) respectfully get in touch with his next of kin and make sure none of his life's work is undone and lost to time.

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

So sad to hear that... I remembered discussed with him about the Studio II. He was a very kind person, with a fantastic knowledge. It's a very bad news. And I am totally in favor to preserve his work, it is a very good idea! Perhaps someone could preserve his website to be sure it will never disappeared?

Link to comment
Share on other sites

  • 4 weeks later...

It's amazing what can turn up in the wake of someone's passing. RIP, Mr. Callahan:

 

https://dankshinskifuneralhome.com/tribute/details/1338/Harry-Callahan-Jr/obituary.html

 

 

https://www.ebay.com/itm/RCA-Studio-II-Game-TV-BINGO-Appears-New-in-Box-Complete-SUPER-RARE-Read-All-/294862232678?mkcid=16&mkevt=1&_trksid=p2349624.m2548.l6249&mkrid=711-127632-2357-0

 

...I don't know where he's getting the info about a third copy from, as this newly emerged Callahan copy would be the third publicly verified copy. Mine (originally the Philly Classic copy preserved by Dan), and the copy that showed up 2016 originally owned by Joseph Santone are the only other two that have emerged into public view. 

  • Like 2
Link to comment
Share on other sites

It's funny as they originally listed it at $29.99 bin and it sold very quickly.

I was very sad I just missed it but then they didn't follow thru with the sale and relisted it at the $10k price....not sure where they pulled that number from ? ??

So i just ended up being glad i wasn't the $29.99 bin buyer who got shafted lol

  • Like 1
Link to comment
Share on other sites

  • 2 months later...

https://www.ebay.com/itm/294976981033?mkcid=16&mkevt=1&mkrid=711-127632-2357-0&ssspo=RzdQMI4wT8W&sssrc=2349624&ssuid=cssq4zlBQMK&var=&widget_ver=artemis&media=COPY

 

...it looks like we now know the upper limits of a copy of TV Bingo. Given the rarity and lore behind it, I must say that I'm a bit surprised that it hasn't yet sold. 

Link to comment
Share on other sites

Well we know the upper asking limits....they started at $8k with no luck.

I figured that was possibly even 3x too high for a sale given the very small fan base for the system.

Maybe the wata boyz aren't quite there yet lol

Link to comment
Share on other sites

  • 1 month later...

https://www.videogamesage.com/forums/topic/2688-post-your-holy-grail-item/?do=findComment&comment=265374

 

... there's now a 4th known copy of Bingo! It was posted back in February but I just saw it now. So, updating the registry of Bingo copies as follows:

 

1) PC2K1/Philly Classic/Dan McIntyre copy: discovered by an owner of the Studio 2 Demonstration Cartridge at the Circle 40 flea-market on the way back home from the previous Philly Classic. This was the infamous copy exhibited at PC2K1 that everyone got excited about and which became a minor videogame urban legend. It re-surfaced in 2018 and I now own it. Does not have a manual but does have two very old photocopied manuals from RCA, and a red inner tray instead of a blue one. The original owner is unknown. 

 

2) the 2016 Joseph Santone copy: Joseph Santone worked in Finance for RCA and this copy was discovered by NJ house cleanout company A W Cleanout and put up on eBay, initially in a lot. Multiple collectors flooded the seller with offers and it was relisted separately and eventually sold to a very established and reputable collector who still has it. This was the copy from which the ROM dump was made by Ed Keefe. This copy is complete.

 

3) The Harry Callahan copy: recently listed complete copy on eBay and is apparently from the estate of the late RCA employee Harry Callahan. Still available and has been relisted multiple times: 

https://www.ebay.com/itm/294976981033?mkcid=16&mkevt=1&mkrid=711-127632-2357-0&ssspo=RzdQMI4wT8W&sssrc=2349624&ssuid=cssq4zlBQMK&var=&widget_ver=artemis&media=COPY

 

4) the videogamesage/VGCollectaholic copy:

 https://www.videogamesage.com/forums/topic/2688-post-your-holy-grail-item/?do=findComment&comment=265374

 

...not only complete but with extra sets of cards and an extra manual! And apparently also found, again at the home of a former RCA employee in NJ, by the same company that found the Santone copy! 

 

So, 4 confirmed copies, and old online posts hint at other potential copies, and the extra card sets known to exist suggest that at least a few more were made. 

 

I guess if anyone wants a copy they just have to shell out on eBay or just move to NJ and go work for A W Cleanout. 

 

  • Like 3
Link to comment
Share on other sites

  • 8 months later...

Got a technical question, hoping someone knows the answer.

 

How the [beep] do you compile a .asm file to a .bin and then convert to a .st2 file? I've tried four assemblers now, none of which the format for assembling makes much sense to me, tried assembling raw code of homebrew to make sure I got the right format, but nothing comes up when loading it in. I think part of my issue is that information how to do it is very fragmented, and sometimes references sites that no longer exist.

 

Here is what I got so far:

 

A18 assembler http://www.retrotechnology.com/memship/a18.html - just says there is lots of errors when I try, not sure if there is an error list that is saved...

ASMX http://www.retrotechnology.com/memship/asmx.html - Got the furthest with this one I think, I can get it to create a .bin file, that has something in it, but when I try to load it in emulator... nothing again.

TASM redownloaded dosbox for this, couldn't get this to work either.

There is also asm80 which I did try, and gave up on. https://www.asm80.com/

 

I understand that the st2 filetype is just a renamed .bin with possibly a header at the beginning, though apparently most things would run fine anyway. There is a python program to do this, but it seems riddled with bugs possibly due to depreciation of code or syntax (I can sometimes "fix" this myself, but no luck this time).

 

Anyone able to help?

Link to comment
Share on other sites

18 hours ago, Mikebloke said:

I understand that the st2 filetype is just a renamed .bin with possibly a header at the beginning, though apparently most things would run fine anyway. There is a python program to do this, but it seems riddled with bugs possibly due to depreciation of code or syntax (I can sometimes "fix" this myself, but no luck this time).

 

Anyone able to help?

The .ST2 filetype is a .bin file with an additional 256 bytes header that specify things like where to load the binary in an emulator. The structure of the header is as follows (courtesy of Paul Robson, who I believe came up with this format)

 

Offset Contents Reqd Notes
0-3 Header Y RCA2 in ASCII code
4 Blocks Y Total number of 256 byte blocks in file (including this one)
5 Format Y Format Code (this is format number 1)
6 Video Y If non-zero uses a special video driver, and programs cannot assume that it uses the standard Studio 2 one (top of screen at $0900+RB.0). A value of '1' here indicates the RAM is used normally, but scrolling is not (e.g. the top of the page is always at $900). 
7 -    
8,9 Author N 2 byte ASCII code indicating the identity of the program coder.
10,11 Dumper N 2 byte ASCII code indicating the identity of the ROM Source.
12-15 -    
16-25 Catalogue N RCA Catalogue Code as ASCIIZ string. If a homebrew ROM, may contain any identifying code you wish.
26-31 -    
32-63 Title N Cartridge Program Title as ASCIIZ string.
64-127 Block Pages Y Contain the page addresses for each 256 byte block. The first byte at 64, contains the target address of the data at offset 256, the second byte contains the target address of the data at offset 512, and so on. Unused block bytes should be filled with $00 (an invalid page address). So, if byte 64 contains $1C, the ROM is paged into memory from $1C00-$1CFF
128-255 -    
256 Block 1   (Page address at 64)
512 Block 2   (Page address at 65) 
      and so on

 

Not sure which python script you are using (possibly from Paul Robson's github?) This is probably using python2 and running it on python3 could create issues. For a quick hack, the easiest is probably to copy the first 256 bytes from an existing .st2 file and insert this before your .bin using a hex editor. If your .bin is compiled for $0400, then the only thing that might need to be changed is the byte 4, the length and the block pages. So if your program is less than 256 bytes, byte 4 should be $02 and the block pages should be $04 $00 $00 $00 ... If your .bin is <=512 bytes, then byte 4 should be $03 and block pages should be $04 $05 $00 $00 ...

 

Hope this makes sense. If you still have problems compiling, feel free to PM me

 

FliP

 

  • Like 2
Link to comment
Share on other sites

On 3/12/2023 at 9:33 AM, flip said:

The .ST2 filetype is a .bin file with an additional 256 bytes header that specify things like where to load the binary in an emulator. The structure of the header is as follows (courtesy of Paul Robson, who I believe came up with this format)

 

Offset Contents Reqd Notes
0-3 Header Y RCA2 in ASCII code
4 Blocks Y Total number of 256 byte blocks in file (including this one)
5 Format Y Format Code (this is format number 1)
6 Video Y If non-zero uses a special video driver, and programs cannot assume that it uses the standard Studio 2 one (top of screen at $0900+RB.0). A value of '1' here indicates the RAM is used normally, but scrolling is not (e.g. the top of the page is always at $900). 
7 -    
8,9 Author N 2 byte ASCII code indicating the identity of the program coder.
10,11 Dumper N 2 byte ASCII code indicating the identity of the ROM Source.
12-15 -    
16-25 Catalogue N RCA Catalogue Code as ASCIIZ string. If a homebrew ROM, may contain any identifying code you wish.
26-31 -    
32-63 Title N Cartridge Program Title as ASCIIZ string.
64-127 Block Pages Y Contain the page addresses for each 256 byte block. The first byte at 64, contains the target address of the data at offset 256, the second byte contains the target address of the data at offset 512, and so on. Unused block bytes should be filled with $00 (an invalid page address). So, if byte 64 contains $1C, the ROM is paged into memory from $1C00-$1CFF
128-255 -    
256 Block 1   (Page address at 64)
512 Block 2   (Page address at 65) 
      and so on

 

Not sure which python script you are using (possibly from Paul Robson's github?) This is probably using python2 and running it on python3 could create issues. For a quick hack, the easiest is probably to copy the first 256 bytes from an existing .st2 file and insert this before your .bin using a hex editor. If your .bin is compiled for $0400, then the only thing that might need to be changed is the byte 4, the length and the block pages. So if your program is less than 256 bytes, byte 4 should be $02 and the block pages should be $04 $00 $00 $00 ... If your .bin is <=512 bytes, then byte 4 should be $03 and block pages should be $04 $05 $00 $00 ...

 

Hope this makes sense. If you still have problems compiling, feel free to PM me

 

FliP

 

Yeah I probably will pm! I did try Paul Robson github one and did manage to find a python version with zero errors (think it was 2.7) but nothing loads  correctly. However I don't know if I'm doing one of the steps first wrong, and haven't checked anything with a hex editor. 

 

I think if I can get something compiled I'll be happy because I'm OK with brute force learning assembly till something works! 

Link to comment
Share on other sites

  • 2 weeks later...
  • 4 months later...

I just finished spending the last three weeks of my time going through this thread beginning to end.  While I started hoping to find an answer to a question, I need to say two things first.

 

1. This is an amazing lesson on doing primary research.  I have watched the knowledge base of this system grow drastically, but due to almost ten years of people's effort.  I will have to remember the techniques everyone has used here.

 

2. That RCA Adventure Game digitized at the Hagley?  I want to play that game.  Not the game the team envisioned, THAT game.

 

Page turner: "There's something wrong.  There are extra pages"

Director: "Keep going"

...(later)...

Narrator: "Can we start over?"

Director: "No"

 

Ok, with that out of the way, I have the same question as mikepell two years ago.  There are significantly more Studio II's out there than there are switchboxes to run them.  From pange 9 of the service manual, I can figure out everything except 'T1' in the circuit diagram.  The bottom half of the circuit are noise reduction circuits and C1 is a high-pas filter.  But, what is T1?  The only info I have to work with are some (excellent) photos on Wikipedia and the very first post on this thread.  "This technique is widely used in old RCA products, like mast amplifiers, etc." -fauxscot

 

Because mast amplifiers are another name for antenna amplifiers, I have tried asking a few HAM radio operators about the circuit.  Most of them conclude that it must be an isolation transformer, but the diagram looks more like an autotransformer.  Does anyone here have any contacts that might be able to identify it or guess at the coil values?

 

It's either that, or I am designing a circuit myself, and I have next to zero experience with very high frequency circuit design.  Heck, I don't even know if the S2 I have works.

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...