[stella] Poor man's cart dumper

Subject: [stella] Poor man's cart dumper
From: "Fred Quimby" <c9r@xxxxxxxxxxx>
Date: Sat, 13 Aug 2005 21:58:06 -0400
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

[demime 1.01d removed an attachment of type application/x-zip which had a name of 2600dump.ZIP]

Current Thread