Advertisement
Guest User

Untitled

a guest
Dec 7th, 2016
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. .bank 0
  2. .org $0500 ;;put code in ram
  3.  
  4. WaitFlashReady:
  5. ; lda #$00
  6. ; sta $C000 ;;set bank to 0
  7. WaitFlashReadyLoop
  8. lda [destLo], y
  9. cmp [destLo], y
  10. bne WaitFlashReadyLoop ;;loop until value read is same twice in a row
  11.  
  12. ; lda #$F0
  13. ; sta $8000 ;;send reset
  14. rts
  15.  
  16. .ifdef GTROM
  17.  
  18. SectorErase:
  19.  
  20. ; 5555=AA
  21. lda #$AA
  22. sta $D555
  23.  
  24. ; 2AAA=55
  25. lda #$55
  26. sta $AAAA
  27.  
  28. ; 5555=80
  29. lda #$80
  30. sta $D555
  31.  
  32. ; 5555=AA
  33. lda #$AA
  34. sta $D555
  35.  
  36. ; 2AAA=55
  37. lda #$55
  38. sta $AAAA
  39.  
  40. ; sector address=30
  41. lda destBank
  42. ora #%00110000
  43. sta $5000 ;;set bank address = sector / 4
  44. ldy #$00
  45. lda #$30
  46. sta [destLo], y ;;erase the sector
  47.  
  48. jsr WaitFlashReady
  49. lda returnBank
  50. ora #%01110000
  51. sta $5000
  52. rts
  53.  
  54. ByteProgram:
  55.  
  56. pha
  57. ; 5555=AA
  58. lda #$AA
  59. sta $D555
  60.  
  61. ; 2AAA=55
  62. lda #$55
  63. sta $AAAA
  64.  
  65. ; 5555=A0
  66. lda #$A0
  67. sta $D555
  68.  
  69. ; addr=data
  70. lda destBank
  71. ora #%00110000
  72. sta $5000
  73. pla
  74. sta [destLo], y
  75.  
  76. jsr WaitFlashReady
  77. lda returnBank
  78. ora #%01110000
  79. sta $5000
  80. rts
  81.  
  82. .else
  83.  
  84. SectorErase:
  85.  
  86. ; 5555=AA 0101 a15=0 a14=1 bank 1
  87. lda #$01
  88. sta $C000 ; set bank to 1 for correct A15-14
  89. lda #$AA
  90. sta $9555 ; 8000 + 1555, bank = 4000
  91.  
  92. ; 2AAA=55 0010 a15=0 a14=0 bank 0
  93. lda #$00
  94. sta $C000
  95. lda #$55
  96. sta $AAAA ; 8000 + 2AAA, bank = 0000
  97.  
  98. ; 5555=80
  99. lda #$01
  100. sta $C000 ; set bank to 1 for correct A15-14
  101. lda #$80
  102. sta $9555 ; 8000 + 1555, bank = 4000
  103.  
  104. ; 5555=AA
  105. lda #$01
  106. sta $C000 ; set bank to 1 for correct A15-14
  107. lda #$AA
  108. sta $9555 ; 8000 + 1555, bank = 4000
  109.  
  110. ; 2AAA=55
  111. lda #$00
  112. sta $C000
  113. lda #$55
  114. sta $AAAA ; 8000 + 2AAA, bank = 0000
  115.  
  116. ; sector address=30
  117. lda destBank
  118. sta $C000 ;;set bank address = sector / 4
  119. ldy #$00
  120. lda #$30
  121. sta [destLo], y ;;erase the sector
  122.  
  123. jsr WaitFlashReady
  124. lda returnBank
  125. sta $C000
  126. rts
  127.  
  128. ByteProgram:
  129.  
  130. pha
  131. ; 5555=AA 0101 a15=0 a14=1 bank 1
  132. lda #$01
  133. sta $C000 ; set bank to 1 for correct A15-14
  134. lda #$AA
  135. sta $9555 ; 8000 + 1555, bank = 4000
  136.  
  137. ; 2AAA=55 0010 a15=0 a14=0 bank 0
  138. lda #$00
  139. sta $C000
  140. lda #$55
  141. sta $AAAA ; 8000 + 2AAA, bank = 0000
  142.  
  143. ; 5555=A0
  144. lda #$01
  145. sta $C000 ; set bank to 1 for correct A15-14
  146. lda #$A0
  147. sta $9555 ; 8000 + 1555, bank = 4000
  148.  
  149. ; addr=data
  150. lda destBank
  151. sta $C000
  152. pla
  153. sta [destLo], y
  154.  
  155. jsr WaitFlashReady
  156. lda returnBank
  157. sta $C000
  158. rts
  159.  
  160. .endif
  161.  
  162. SectorProgram: ;;programs 256 bytes from RAM to flash
  163. ldy #$00
  164. SectorProgramLoop:
  165. lda [sourceLo], y
  166. jsr ByteProgram
  167. iny
  168. bne SectorProgramLoop
  169. rts
  170.  
  171. .org $8600 ;;do not change location of copyramcode
  172. CopyRAMCode:
  173. ldy #$00
  174. CopyRAMCodeLoop:
  175. lda $8500, y ;;copy flashing code to ram
  176. sta $0500, y
  177. iny
  178. cpy #$E0 ;;90 actually used
  179. bne CopyRAMCodeLoop
  180. rts
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement