RE: [personal] [stella] Poor man's cart dumper

Subject: RE: [personal] [stella] Poor man's cart dumper
From: "Dan Boris" <dboris@xxxxxxxxxxx>
Date: Sun, 14 Aug 2005 09:20:52 -0400
Cool idea, but I would mention a note of caution. It can be harmful to
the cartridge to remove it while the system is powered on. The reason
this can be a problem (this is not specific to the 2600, but with any
electronic device not designed to be hot pluggable), is that if input
signals get applied before ground, you can end up with current flow
through paths inside the chip where it might not be designed to flow
which can damage the chip. 2600 carts seem pretty rugged, so the damage
is unlikely, but it's always possible.

Dan


> -----Original Message-----
> From: Fred Quimby [mailto:c9r@xxxxxxxxxxx] 
> Sent: Saturday, August 13, 2005 9:58 PM
> To: stella@xxxxxxxxxxxxxxxxxx
> Subject: [personal] [stella] Poor man's cart dumper
> 
> 
> Yes, cart dumpers are totally pointless anymore.  This is 
> just for kicks.  
> But I am not sure if one has ever been done that will run on 
> a regular 2600 
> and needs no funky hardware.
> 
> It works with a 2600, and dumps 2k and 4k carts through the 
> right joystick 
> port connected by two wires to a serial port (your serial 
> port must accept 
> TTL signals, as many do, or you'll need a TTL level converter 
> and you need 
> to modify the program below.)  For different banking schemes, 
> you will need 
> to modify the asm file.
> 
> It dumps the binary as a standard hex ASCII file.  It copies 
> a short program 
> into the 2600's RAM and jumps there, and then waits for you 
> to remove the 
> cart, insert the cart to be dumped.  You'll be treated to a 
> colorful display 
> while it waits for you to do everything.  Then you press 
> reset to begin 
> dumping.
> 
> Removing the cart while the 2600 is running can cause a crash 
> unless you do 
> it a certain way.  I found that angling the cart (leaving the 
> left side pins 
> in longer than the right side) will allow you to remove the 
> cart nearly 
> every time.  To insert another cart, also angle it so you 
> insert the right 
> side pins first.
> 
> When dumping is done, a brk is executed which will usually 
> start up the cart 
> that you have inserted.
> 
> Connections:
> 2600	PC serial port
> -----------------------------
> Pin 1	Pin 2
> Pin 8	Pin 5
> 
> asm code here:
> 
> processor 6502
> include "vcs.h"
> include "macro.h"
> 
> BIT1	EQU	13		; 1200 baud
> BIT2	EQU	13
> 
> ORG $0080
> 
> noreset
> lda SWCHB
> lsr
> iny
> sty COLUBK
> BCS noreset
> 
> keepgoing
> ; ldy #20
> ; jsr WSYNCY
> shit
> lda $f000,x
> pha
> lsr
> lsr
> lsr
> lsr
> jsr conv2hex
> pla
> jsr conv2hex
> lda #32
> jsr OUT232
> inc $f9
> lda $f9
> and #$0f
> sta $f9
> bne noret
> lda #13
> jsr OUT232
> noret
> inc $fa
> ldx $fa
> bne keepgoing
> inc shit+2
> bne keepgoing
> brk
> 
> conv2hex
> and #$0f
> cmp #10
> bcc noadd
> adc #6
> noadd
> adc #48
> 
> OUT232
> 	LDX	#$FF		; output low for start bit
> ; change above to LDX #0 if using TTL converter
> 	STX	SWCHA
> 	LDX	#4		; init count for 4 bit pairs
> 	LDY	#BIT1		; wait 1 bit
> 	JSR	WSYNCY		; send the start bit
> 	EOR	#$FF
> ; Remove above line if using TTL converter
> 
> OUT232b
> 	STA	SWCHA
> 	LDY	#BIT2		; wait 1 bit
> 	JSR	WSYNCY	; send the next bit
> 	ROR			; rotate out next bit
> 	STA	SWCHA
> 	ROR			; rotate out next bit
> 	LDY	#BIT1		; wait 1 bit
> 	JSR	WSYNCY	; output next bit
> 	DEX			; decrement counter
> 	BNE	OUT232b	; loop until 8 bits sent
> 
> 
> 	LDA	#$00		; output high for stop bit
> ; change above to LDA #$FF if using TTL converter
> 	STA	SWCHA
> 	LDY	#BIT1		; wait 1 bit
> 	JSR	WSYNCY	; send the stop bit
> 
> 	RTS
> WSYNCY	STY	WSYNC		; wait a line
> 	DEY			; decrement line counter
> 	BNE	WSYNCY		; loop until done
> 	RTS
> 
> 
> echo ($f9-*)," bytes free"
> .byte 
> 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
> 0,0,0,0,0,0,0,0
> 
> start
> 
> sei
> cld
> ldx #$FF
> txs
> lda #0
> clearmem
> sta 0,x
> dex
> bne clearmem
> ldx #$7F
> loop2
> lda $f000,x
> sta $80,x
> dex
> bpl loop2
> lda #1
> sta SWACNT
> lda #$00
> sta SWCHA
> rerestart
> ldy #200
> delay
> jsr WSYNCY
> ldx #0
> jmp $0080
> 
> ORG $107C
> .word start+$f80
> .word start+$f80
> 
> Archives (includes files) at 
> http://www.biglist.com/lists/stella/archives/
> Unsub & more at 
> http://stella.biglist.com
> 

Archives (includes files) at http://www.biglist.com/lists/stella/archives/
Unsub & more at http://stella.biglist.com

Current Thread