removed obsolete files

This commit is contained in:
Jakub Husak
2023-02-03 12:35:09 +01:00
parent c9f32a2987
commit e197d6ca89
3 changed files with 0 additions and 794 deletions
-486
View File
@@ -1,486 +0,0 @@
; JatariCart flasher
; by Jakub Husak , 04.01.2020
; All Rights Reserved.
;
; JatariCart is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; JatariCart is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with JatariCart256. If not, see <http://www.gnu.org/licenses/>.
;
icl '../../lib/atari.hea'
; flash image is included at the end of file
; uncomment when flashing all cart or want to check all blocks written so far.
;.def compareall
BankNum equ $88
Counter equ $89
operation equ $8a
start equ 6 ; format chip and program
select equ 5 ; ferify and format sectors
option equ 3 ; verify
outchar equ $F2B0
memtop equ $2e5
dmactls equ $22f
_SOURCE equ $6000
_DEST equ $A000
; test code
org $2000
STARTFLASHWRITE
mva #$A0 106
jsr opened
lda 20
@ cmp 20
beq @-
@ lda #$1
sta 66
; waiting for cart to be inserted
jsr print
TITLE+128
dta $9b,c'JatariCart/MaxFlash flasher'
dta $9b
dta c'by JHusak, I.2023'
dta $9b
dta c'JatariCart of size '
CARTSIZE+128
dta c' kB needed',$9b,$9b
dta c'Insert JatariCart of '
CARTSIZE+128
dta c' kB...',0
sta $D500
?wloop lda $D013
lsr
bcc ?wloop
ldx #$25
?lloop
bit VCOUNT
bmi *-3
bit VCOUNT
bpl *-3
dex
bne ?lloop
jsr print
dta c' inserted.',$9b,0
; cart inserted, fake it was not changed
lda $d013
sta $3fa
ldx #0 ; chip address
stx numchips
_check_chips
stx _storex
jsr check_type
bcc ?_next
jsr print
dta c'unrecognized chip: ',0
lda m_vendor
jsr printhex
lda m_kind
jsr printhex
cpx #$0
seq
jmp *
jsr print
dta c'ignoring chip ...',0
jmp menu
?_next inc numchips
lda numchips
clc
adc #$30
sta chipno
jsr print
dta c'chip '
chipno
dta c'0'
dta c' vend/prod: ',0
lda m_vendor
jsr printhex
lda m_kind
jsr printhex
jsr print
dta c' code: ',0
; print memory type
lda M_VECTOR
clc
adc #flash_idstr ; will print flashmem text id
sta ?taddr
lda M_VECTOR+1
adc #0
sta ?taddr+1
ldy #0
?loop ; write string onscreen till 0
lda ?taddr:$ffff,y
beq ?exit
sty st_y
jsr outchar
ldy st_y:#0
iny
bne ?loop
?exit
jsr printnl
ldx _storex
cpx #0
bne menu
lda m_vendor
sta t_vendor
lda m_kind
sta t_kind
ldx #$40
jmp _check_chips
menu
jsr printnl
;lda #$ff
;sta $d301
jsr print
dta c'Press:',$9b
dta c'START - format cart and programm',$9b
;dta c'SELECT - verify; repair bad blocks.',$9b
dta c'OPTION - verify',$9b,0
?wloop lda 53279
cmp #7
beq ?wloop
sta operation
cmp #select
beq ?wloop
cmp #option
jeq CHECKONLY
cmp #start
beq FORMAT
bne ?wloop
; start
FORMAT
jsr printformatting
jsr print
dta c'1...',0
ldx #0
jsr flashformatchip
bcs formatfailed
jsr flashend ; restores display etc.
.if .def TWOCHIPS
jsr printdone
jsr printformatting
jsr print
dta c'2...',0
ldx #$40
jsr flashformatchip
bcs formatfailed
jsr flashend ; restores display etc.
.endif
printdone jsr print
dta c'done:)',$9b,0
rts
printformatting
jsr print
dta c'Formatting cart chip ',0
rts
formatfailed
jsr print
dta c'failed:(',$9b,'Waiting for reboot...',$9b,0
jmp *
VERIFYREPAIR
jsr print
dta c'Verify and ',0
CHECKONLY
jsr print
dta c'Compare.',$9b,0
rts
t_vendor .byte 0
t_kind .byte 0
numchips .byte 0
_storex .byte 0
crcsums
:128 dta 0,0
opened
ldx #0
lda #12
jsr icio
mwa #name icbufa,x
mva #$0c icax1,x
mva #$0 icax2,x
lda #3
icio sta iccmd,x
jmp $e456
name dta 'E:',$9b
CHECKINIT
mwa #_SOURCE _csrc
mwa #_DEST _cdst
sei
CHECK
mva #0 badcompare_counter
sta badcompare_counter+1
ldx BankNum
sta $d500,x
checkloop
_csrc equ * + 1
lda $6000 ; src
_cdst equ * + 1
cmp $A000 ; dst
beq @+
lda _csrc
ldx _csrc+1
jsr BADCOMPARE
@ inw _csrc
inw _cdst
lda _csrc+1
cmp #>_SOURCE+$20
bne checkloop
cpw #0 badcompare_counter
beq @+
sta $d580
lda $d013
sta $3fa
cli
jsr print
dta c'non-match byte#:',0
lda badcompare_counter+1
jsr printhex
lda badcompare_counter
jsr printhex
jsr printnl
sec
rts
@ sta $d580
lda $d013
sta $3fa
cli
lda #'o'
jsr outchar
@ clc
dmaon mva #34 dmactls
sta dmactl
rts
VERIFY
;mwa #_SOURCE _csrc
;mwa #_DEST _cdst
jsr CHECKINIT
bcc v_rts
lda #'f'
jsr outchar
ldx BankNum
lda #$a0
jsr flashformatsector
ldx BankNum
lda #$b0
jsr flashformatsector
jsr FORMATTED
dec Counter
bne VERIFY
v_rts jmp dmaon
COMPARE_CRC16_DEST_ALL
lda BankNum
sta _tbanknum
@ sei
_tbanknum equ * + 1
sta $D500
clc
mva _tbanknum calccrc_bank
jsr CALCCRC_DEST
jsr status_crc
.ifdef compareall
dec _tbanknum
bpl @-
.endif
sta $D580
lda $d013
sta $3fa
cli
rts
status_crc
php
jsr printBank_t
plp
php
sne
lda #'o'
plp
seq
lda #'!'
jsr outchar
lda #','
jmp outchar
CALCCRC_DEST
php
mwa #_DEST _tsrc
bne crccont
CALCCRC ; c=1 - write; c=0 - check
php
mwa #_SOURCE _tsrc
mwa #$2000 _tcnt
crccont mwa #$ffff crc16.crc
_tsrc equ * + 1
lda $ffff
jsr crc16.updCRC
inw _tsrc
dew _tcnt
bne _tsrc -1
calccrc_bank equ * +1
lda #$ba ; nk number
asl
tax
plp
bcc crccheck
mwa crc16.crc crcsums,x
rts
_tcnt :2 dta 0
crccheck
cpw crc16.crc crcsums,x
rts
printBank_t
lda _tbanknum
bpl @+
printBank
jsr printnl
lda BankNum
@ pha
lda #'B'
jsr outchar
pla
jsr printhex
lda #':'
jmp outchar
MAIN_PROCESS
;mva #0 dmactls
;sta dmactl
sec
mva BankNum calccrc_bank
jsr CALCCRC
mwa #_DEST flashaddr
jsr printBank
lda operation
cmp #select
jeq VERIFY
cmp #option
jeq CHECKINIT
FORMATTED
mwa #_SOURCE _writeaddr
lda _writeaddr+1
clc
adc #$20
sta _cmpaddr ; only hi byte
mwa #_DEST flashaddr
; sec
formatted_next
ldx BankNum
formatted_next2
_writeaddr equ *+1
lda $ffff
jsr flashwritebyte
jsr flashincaddr
inw _writeaddr
_cmpaddr equ * + 1
lda #$ff
cmp _writeaddr+1
bne formatted_next2
jsr flashend
jmp COMPARE_CRC16_DEST_ALL
FINISH_PROCESS
jsr print
dta $9b,'Finished',0
jmp *
rts
badcompare_counter dta 0,0
BADCOMPARE
ldy 53279
cpy #7
beq @+
pha
txa
pha
lda #'!'
jsr outchar
pla
jsr printhex
pla
jsr printhex
lda #':'
jsr outchar
mwa _csrc badcompare_tmp1
badcompare_tmp1 equ * +1
lda $ffff
jsr printhex
lda #'/'
jsr outchar
mwa _cdst badcompare_tmp2
badcompare_tmp2 equ * +1
lda $ffff
jsr printhex
jsr printnl
@ inw badcompare_counter
sec
jmp dmaon
; -------
icl '../../lib/flashwritelib.asx'
icl '../../lib/crc16_v2.asm'
;jsr print
;dta c'AlaMaKota.',$9b,0
;lda #$55
;jsr printhex
;lda #$aa
;jsr printhex
;jmp *
icl '../../lib/print2.asx'
org $2e2
dta a(STARTFLASHWRITE)
; ---------------------------------------
; blocks for every 8kb bank
.rept BANKS, #
.print "A :1"
.local block:1
;------------
org BankNum
dta b(:1)
dta b(1) ; Counter
;------------
org _SOURCE
BANKS_FILE(:1)
;------------
org $2e2
dta a(MAIN_PROCESS)
;------------
.endl
.endr
;------------
.if .def CUSTOM_CART_LAYOUT
CUSTOM_CART_LAYOUT
.endif
org $2e2
dta a(FINISH_PROCESS)
@@ -1,303 +0,0 @@
; flash eeprom library
; by JHusak , 04.01.2020
; free to use.
lstore_x dta 0
; x - 0x0 or 0x40 - chip select
; c - 1 - format, 0 - write
;.print flashcnt
flashoppreamble
pha
txa
pha
; when write byte x must be set to either 0 or 40 temporarily
and #$40
tax
; $5555<$aa
@ sta $d502,x
lda #$aa
sta $b555
; $2aaa<$55
sta $d501,x
lda #$55
sta $aaaa
; $5555<$80
sta $d502,x
; sector format: carry set
scc
lda #$80 ; sector erase
scs
lda #$a0 ; byte programm
sta $b555
bcc @+
; $5555<$aa
sta $d502,x
lda #$aa
sta $b555
; $2aaa<$55
sta $d501,x
lda #$55
sta $aaaa
; PREPARE FOR SECTOR TO ERASE
; set upper bank bits
@ pla
tax
pla
rts
; --------------------------
; PROCEDURE
; x = 0 or 0x40 - flash chip address.
store_x dta 0
flashformatchip2
ldx #$40
dta { bit.w }
flashformatchip
sei
stx store_x
sec ; format preamble
jsr flashoppreamble ; does not touch A
sta $d502,x
lda #$10
sta $b555
lda #$ff
sta flashcmp
jsr flashcheckresult
beq @+
; cart is off and cli
; sec ; error
; rts
@ lda #$3f
sta flashformatcounter
@ sei
ldx store_x
flashformatcounter equ*+1
sta $d5FF,x ; set chip (x) and bank
; set pages count
ldy #$20
; reset address
lda #$a0
sta flashformataddrcheck + 2
; check whole sector against 0xff
jsr flashchecksectorformatted_bare ; destroys x
bcs @+ ; format error
dec flashformatcounter
bpl @-
@ jmp flashcartoff ; preserves C
; --------------------------
; PROCEDURE
flashformatsector
; x - even sector 00 - 7f
; a - erase 4KB from $B000 if A=$B0, FROM $A000 IF A=$A0
; format 4kb evensector
; strange form - easily maps to cartridge banks
; to format bank, must format sector (x<<1) and (x<<1) +1
; first check if all ff
; this is to avoid wear
stx flashformatstorex
sta flashformatstorea
sei
sta $d500,x
sta flashformataddrcheck + 2
jsr flashchecksectorformatted
bcc flashsectorformatgood
sei
flashformatstorex equ * + 1
ldx #0 ; filled before
flashformatstorea equ * + 1
lda #0 ; filled before
; check least sector bit
sec ; format preamble
jsr flashoppreamble ; does not touch A,X
sta $D500,x
; A must be either $A0 or $B0
sta flashtmpaddr+1
sta flashformataddrcheck + 2
lda #$30
flashtmpaddr equ *+1
sta $a000 ; Format!
jsr flashcheckresult
sei
lda flashformatstorea
sta flashformataddrcheck+2
ldx flashformatstorex
sta $d500,x
; check if all data in sector is $ff
flashchecksectorformatted
ldy #$10
flashchecksectorformatted_bare
lda #$ff
ldx #0
flashformataddrcheck
cmp $a000,x
bne flashsectorformaterror
inx
bne flashformataddrcheck
inc flashformataddrcheck + 2
dey
bne flashformataddrcheck
flashsectorformatgood
jsr flashcartoff
clc
rts
flashsectorformaterror
jsr flashcartoff
sec
rts
; ---------------------
; PROCEDURE
flashwritebyte
; a - byte to write
; x - 8kb bank to switch, $00 to $7f, also chip select
; flashaddr - addres in flash - must be a000-offset
; do not programm byte if already good
sei
sta $D500,x ; select bank, chip
ldy #{ cmp.w }
jsr flashprocessbyte
bne @+
;clc
;jmp flashcartoff
sta $D580
cli
clc
rts
@ sta flashcmp
sei
clc ; write byte preamble
jsr flashoppreamble ; preserves A,X
sta $D500,x
ldy #{ sta.w }
; WRITE BYTE !
jsr flashprocessbyte
flashcheckresult ; sei mode
mva #0 flashcnt
ldy #5 ; first time wait short first turn to speed up byte write.
bne @+
flashwaitfordone
; approx 100ms in overall for chip erase:
; as many cycles needed, as 256*cycles >100ms * (1+epsilon)
; 100 ms is 180000 cycles
; so max 256 rough loops must last longer
; 180000 / 256 = 703
; 700 cycles by 6 cycles loop lasts = 116.
; so flipipng values, and adding margin,
; we count 128*6 cycles in inner loop.
; max sector erase by datasheet: 25 ms
; max chip erase by datasheet: 100 ms
ldy#250
@ dey
nop
bne @-
@ ldy #{ lda.w }
jsr flashprocessbyte
ldy #{ eor.w }
jsr flashprocessbyte
inc flashcnt
bne @+
jsr flashcartoff
lda #$ff ; status
rts
@
and #$40
bne flashwaitfordone
; in acc will be mismatched byte
ldy #{ lda.w }
jsr flashprocessbyte
jsr flashcartoff ; preserves axy, not p
flashcmp equ *+1
cmp #0
; when non zero = error
rts
flashcnt
dta 0
; ----------------------
; PROCEDURE
flashprocessbyte
; y - byteop for cpu to do with byte
; flashaddr - stored address
sty flashbyteop
flashaddr equ *+1
flashbyteop
sta $aaaa
rts
flashincaddr
inw flashaddr
rts
flashsetaddr
stx flashaddr
sty flashaddr+1
rts
flashcartoff
pha
sta $d580
lda $d013
sta $3fa
cli
pla
rts
; PROCEDURE
; Y-char to write
PRINTWHAT
php
pha
txa
pha
tya
pha
jsr $f2b0
pla
tay
pla
tax
pla
plp
rts
PRINTDOT
php
pha
txa
pha
tya
pha
lda #'.'
jsr $f2b0
pla
tay
pla
tax
pla
plp
rts
; ----------------------- IINT
; org $2e2
; dta a($600)
@@ -1,5 +0,0 @@
outfile=OnEscapeflashwrite
cd `dirname $0`
mads flashwrite.asx -m:macroflashname.asx -o:"$outfile".xex
rm "$outfile".lst