BMOW title
Floppy Emu banner

Tranz 330 Files

I’ve posted an archive containing the original Tranz 330 program file dump, my commented disassembly of the original program, and two versions of the Mozart demo in source and binary form. If you can get your hands on a Tranz 330 from a surplus electronics supplier, this should give you an afternoon’s entertainment! You can grab the files here.

Read 10 comments and join the conversation 

10 Comments so far

  1. Nuetron - December 28th, 2012 2:02 pm

    Hi Steve!

    Do you have a full schematic of the tranz mainboard? I have a tranz 330 and accompanying printer, and I want to remove the Z80 cpu, and add in a texas instruments MSP430G2452 (on a breakout/adapter).

    Thanks!

  2. Steve Chamberlin - January 1st, 2013 6:48 pm

    Sorry, I don’t have any schematics.

  3. James - February 13th, 2013 1:43 pm

    I’ve been playing with this recently and encountered a strange issue. The program will run fine the first time, but if power is disconnected, any future attempts result in a blank display and unresponsive unit. I’ve found that clearing the battery backed SRAM by momentarily shorting the vcc pin resolves things until the power is cycled. Anyone else encounter this? I’ve tried 27128 and 27C256 EPROMs since it’s what I had lying around and the binary is very small.

  4. jfaulken - March 19th, 2014 3:12 pm

    James – I’m experiencing the same thing. I’m using a 27C512 and loading it at $8000 as described in Steve’s post. Mozart runs fine, I power cycle it, blank screen.

    Since clearing the RAM fixes it, it’s likely some kind of corruption that’s happening when the program starts up. Gonna work on debugging it, see what I can come up with. 🙂

    – John

  5. Steve Chamberlin - March 22nd, 2014 10:14 am

    It’s been a long time, but my first guess is the program incorrectly assumes that uninitialized memory locations will be zero. That’s usually true at first power-up, but not after a reset or even a brief power on-off-on cycle. Try modifying the code to explicitly set all variables to zero when it starts.

  6. jfaulken - March 19th, 2014 3:13 pm

    Steve, awesome work btw. Thanks for posting this is such detail. You are a god among men. 😀

    – John

  7. John Barthol - January 30th, 2015 12:28 pm

    John,

    I have seen this with one of the 330’s I have. From doing some tracing, it appears the NMI pin is connected to the RT clock circuit so it’s possible that a non-maskable interrupt is being generated upon startup. I have another 330 which does not exhibit this behavior.

    Another strange thing is that I can get the mozart rom and/or my monitor/msbasic working again by first powering up with the original eprom, powering down and then switching it out for the custom rom.

  8. Ed - August 19th, 2020 10:54 pm

    I too see the strange behavior that requires shorting the VCC pin. I\’ve written my own Hello World that should be configuring all the interrupts to simply do nothing. I\’ve also traced the pins and it doesn\’t seem that the OKI RTC has its pulse output connected to anything other than a test point, and the Z80 only has its NMI connected to a pullup. I clipped off the coin cell because it was dead. That seems to have helped somewhat.

    Perhaps something with however the power-on reset circuit is built? I\’d appreciate any suggestions.

    Here\’s my Hello World: https://github.com/eparadis/tranz330/

    Thanks for all the write-up here!

  9. John Barthol - August 20th, 2020 3:15 am

    I found that the following power up delay fixed my issues in some of the problematic 330’s. It may have to do with the fact that the RAM isn’t quite stable when the stack pointer is loaded. Who knows but it is working for me now…

    COLD: DI ; DISABLE INTERRUPTS
    LD HL, 0B00H ; POWER ON DELAY

    COLD_DELAY:
    DEC HL
    LD A, H
    OR L
    JR NZ, COLD_DELAY
    LD SP, STACK ; SET UP STACK

    You can see this delay in Steve’s disassembly of the original ROM:

    0081 0068 26 0B init: LD H,0BH
    0082 006A 2B init_delay: DEC HL
    0083 006B 7C LD A,H
    0084 006C B5 OR L
    0085 006D 20 FB JR NZ,init_delay
    0086 006F 32 FF 95 LD (95FFH),A ; store zero
    0087 0072 31 F0 95 LD SP,95F0H ; init stack pointer

  10. Ed - August 22nd, 2020 6:02 pm

    Cool! Thanks for the tip, John!

Leave a reply. For customer support issues, please use the Customer Support link instead of writing comments.