RAM_global_variables:
+ pageAdr: 0x4006
commandmode: 0x400a
+ length: 0x400e
+ readLineInProgress: 0x4010
+ line[64]: 0x4012
+
+ __bss_start: 0x403f
+ crc: 0x4052
+ end: 0x446e
ringBufferIn: 0x4470
ringBufferOut: 0x4478
- outRingBuffer[]: 0x447a
+ outRingBuffer[256]: 0x447a
+ error: 0x457a
+ packetNum: 0x4a96
+ pageD[256]: 0x4a9a
+ start: 0x4b9a
+ __bss_end: 0x4b9f
rom.hex: file format ihex
3144: 10 42 fe ff br &0xfffe
+
;-----------------------------------------------------------------------
; Bootloader through UART0
gotoMain:
316e: 30 40 d2 31 br #main ;#0x31d2
+
+init:
3172: 7c 46 mov.b @r6+, r12
- 3174: 54 40 3f 40 mov.b 0x403f, r4 ;PC rel. 0x071b7
+ 3174: 54 40 3f 40 mov.b __bss_start, r4 ;0x403f, r4 ;PC rel. 0x071b7
3178: 00 40 brpc
317a: 8f 43 00 00 mov #0, 0(r15) ;r3 As==00, CRCDI_L(r15)
317e: 2f 53 incd r15
3180: 3f 90 9f 4b cmp #19359, r15 ;#0x4b9f
3184: fa 2b jnc $-10 ;abs 0x317a
- 3186: 92 43 9a 4b mov #1, &0x4b9a ;r3 As==01
- 318a: 92 43 96 4a mov #1, &0x4a96 ;r3 As==01
+ 3186: 92 43 9a 4b mov #1, &start ;&0x4b9a ;r3 As==01
+ 318a: 92 43 96 4a mov #1, &packetNum ;&0x4a96 ;r3 As==01
318e: 30 41 ret
- string0:
- ; "\nSend via XMODEM (CRC or 1K) the extended hex file to program.\n>"
+string0:
+; "\nSend via XMODEM (CRC or 1K) the extended hex file to program.\n>"
3190: 0a 53
3192: 65 6e
3194: 64 20
;end #main
;-----------------------------------------------------------------------
+
+
+;-----------------------------------------------------------------------
+waitForUARTEmpty:
3224: 32 d2 eint
3226: a2 b3 00 22 bit #2, &UART0_CR ;r3 As==10
322a: fc 23 jnz $-6 ;abs 0x3224
322c: 30 41 ret
+;end waitForUARTEmpty
+;-----------------------------------------------------------------------
- timeSetup:
+;-----------------------------------------------------------------------
+timeSetup:
322e: 0b 12 push r11
3230: 0a 12 push r10
3232: 82 43 00 1c mov #0, &TMR0_CR ;r3 As==00
32a4: 3b 41 pop r11
;return r15 (time)
32a6: 30 41 ret
+; end timeSetup
+;-----------------------------------------------------------------------
+;-----------------------------------------------------------------------
+emit:
32a8: 4d 4f mov.b r15, r13
32aa: 1e 42 70 44 mov &ringBufferIn,r14 ;&0x4470,r14
32ae: 1e 53 inc r14
32b0: 0c 4e mov r14, r12
32b2: 7c f3 and.b #-1, r12 ;r3 As==11
32b4: 3e 53 add #-1, r14 ;r3 As==11
+;wait for output buffer to have space
32b6: 32 d2 eint
32b8: 82 9c 78 44 cmp r12, &ringBufferOut ;&0x4478
32bc: fc 27 jz $-6 ;abs 0x32b6
32d2: 01 24 jz $+4 ;abs 0x32d6
32d4: 30 41 ret
32d6: 7f 40 0d 00 mov.b #13, r15 ;#0x000d
- 32da: b0 12 a8 32 call #0x32a8
+ 32da: b0 12 a8 32 call #emit ;#0x32a8
32de: fa 3f jmp $-10 ;abs 0x32d4
32e0: ce 4d 7a 44 mov.b r13, 17530(r14);0x447a(r14)
32e4: 82 4c 70 44 mov r12, &ringBufferIn ;&0x4470
32e8: f2 3f jmp $-26 ;abs 0x32ce
+;end emit
+;-----------------------------------------------------------------------
+
+
+
+;-----------------------------------------------------------------------
+PrintString:
32ea: 0b 12 push r11
32ec: 0b 4f mov r15, r11
32ee: cf 93 00 00 tst.b 0(r15) ;CRCDI_L(r15)
32f2: 07 24 jz $+16 ;abs 0x3302
32f4: 6f 4b mov.b @r11, r15
32f6: 1b 53 inc r11
- 32f8: b0 12 a8 32 call #0x32a8
+ 32f8: b0 12 a8 32 call #emit ;#0x32a8
32fc: cb 93 00 00 tst.b 0(r11) ;CRCDI_L(r11)
3300: f9 23 jnz $-12 ;abs 0x32f4
3302: 3b 41 pop r11
3304: 30 41 ret
- 3306: 49 6e addc.b r14, r9
- 3308: 63 6f .word 0x6f63; ???? Illegal as 2-op instr
- 330a: 6d 70 subc.b pc, r13
- 330c: 6c 65 addc.b @r5, r12
- 330e: 74 65 addc.b @r5+, r4
- 3310: 20 68 addc @r8,pc
- 3312: 65 78 subc.b @r8, r5
- 3314: 20 66 addc @r6,pc
- 3316: 69 6c addc.b @r12, r9
- 3318: 65 00 4e 6f movapc, &0x56f4e
- 331c: 6e 2d jc $+734 ;abs 0x35fa
- 331e: 68 65 addc.b @r5, r8
- 3320: 78 20 jnz $+242 ;abs 0x3412
- 3322: 63 68 .word 0x6863; ???? Illegal as 2-op instr
- 3324: 61 72 subc.b #4,sp ;r2 As==10
- 3326: 61 63 addc.b #2,sp ;r3 As==10
- 3328: 74 65 addc.b @r5+, r4
- 332a: 72 20 jnz $+230 ;abs 0x3410
- 332c: 66 6f addc.b @r15, r6
- 332e: 75 6e addc.b @r14+, r5
- 3330: 64 20 jnz $+202 ;abs 0x33fa
- 3332: 69 6e addc.b @r14, r9
- 3334: 20 66 addc @r6,pc
- 3336: 69 6c addc.b @r12, r9
- 3338: 65 00 48 65 movapc, &0x56548
- 333c: 78 20 jnz $+242 ;abs 0x342e
- 333e: 63 6f .word 0x6f63; ???? Illegal as 2-op instr
- 3340: 64 65 addc.b @r5, r4
- 3342: 20 6c addc @r12,pc
- 3344: 65 6e addc.b @r14, r5
- 3346: 67 74 subc.b @r4, r7
- 3348: 68 20 jnz $+210 ;abs 0x341a
- 334a: 65 72 subc.b #4, r5 ;r2 As==10
- 334c: 72 6f addc.b @r15+,sr
- 334e: 72 00 48 65 movapc, &0x6548
- 3352: 78 20 jnz $+242 ;abs 0x3444
- 3354: 63 68 .word 0x6863; ???? Illegal as 2-op instr
- 3356: 65 63 addc.b #2, r5 ;r3 As==10
- 3358: 6b 73 subc.b #2, r11 ;r3 As==10
- 335a: 75 6d addc.b @r13+, r5
- 335c: 20 65 addc @r5,pc
- 335e: 72 72 subc.b #8,sr ;r2 As==11
- 3360: 6f 72 subc.b #4, r15 ;r2 As==10
- 3362: 00 46 br r6
- 3364: 6c 61 addc.b sp, r12
- 3366: 73 68 .word 0x6873; ???? Illegal as 2-op instr
- 3368: 20 77 subc @r7,pc
- 336a: 72 69 addc.b @r9+,sr
- 336c: 74 69 addc.b @r9+, r4
- 336e: 6e 67 addc.b @r7, r14
- 3370: 20 70 subc pc,pc
- 3372: 72 6f addc.b @r15+,sr
- 3374: 62 6c addc.b @r12,sr
- 3376: 65 6d addc.b @r13, r5
- 3378: 00 54 add r4,pc
- 337a: 72 61 addc.b @r1+,sr
- 337c: 6e 73 subc.b #2, r14 ;r3 As==10
- 337e: 66 65 addc.b @r5, r6
- 3380: 72 20 jnz $+230 ;abs 0x3466
- 3382: 63 61 .word 0x6163; ???? Illegal as 2-op instr
- 3384: 6e 63 addc.b #2, r14 ;r3 As==10
- 3386: 65 6c addc.b @r12, r5
- 3388: 6c 65 addc.b @r5, r12
- 338a: 64 00 06 33 movapc, &0x43306
+;end PrintString
+;-----------------------------------------------------------------------
+
+
+;string errorMessages[0] = "Incomplete hex file"
+ 3306: 49 6e
+ 3308: 63 6f
+ 330a: 6d 70
+ 330c: 6c 65
+ 330e: 74 65
+ 3310: 20 68
+ 3312: 65 78
+ 3314: 20 66
+ 3316: 69 6c
+ 3318: 65 00
+
+;string errorMessages[2] = "Non-hex character found in file"
+ 331a: 4e 6f
+ 331c: 6e 2d
+ 331e: 68 65
+ 3320: 78 20
+ 3322: 63 68
+ 3324: 61 72
+ 3326: 61 63
+ 3328: 74 65
+ 332a: 72 20
+ 332c: 66 6f
+ 332e: 75 6e
+ 3330: 64 20
+ 3332: 69 6e
+ 3334: 20 66
+ 3336: 69 6c
+ 3338: 65 00
+
+;string errorMessages[3] = "Hex code length error"
+ 333a: 48 65
+ 333c: 78 20
+ 333e: 63 6f
+ 3340: 64 65
+ 3342: 20 6c
+ 3344: 65 6e
+ 3346: 67 74
+ 3348: 68 20
+ 334a: 65 72
+ 334c: 72 6f
+ 334e: 72 00
+
+;string errorMessages[4] = "Hex checksum error"
+ 3350: 48 65
+ 3352: 78 20
+ 3354: 63 68
+ 3356: 65 63
+ 3358: 6b 73
+ 335a: 75 6d
+ 335c: 20 65
+ 335e: 72 72
+ 3360: 6f 72
+ 3362: 00
+
+'string errorMessages[5] = "Flash writing problem"
+ 3363: 46
+ 3364: 6c 61
+ 3366: 73 68
+ 3368: 20 77
+ 336a: 72 69
+ 336c: 74 69
+ 336e: 6e 67
+ 3370: 20 70
+ 3372: 72 6f
+ 3374: 62 6c
+ 3376: 65 6d
+ 3378: 00
+
+;string errorMessages[6] = "Transfer cancelled"
+ 3379: 54
+ 337a: 72 61
+ 337c: 6e 73
+ 337e: 66 65
+ 3380: 72 20
+ 3382: 63 61
+ 3384: 6e 63
+ 3386: 65 6c
+ 3388: 6c 65
+ 338a: 64 00
+
+ 338c: 06 33 movapc, &0x43306
338e: 00 00 bra pc
3390: 1a 33 jn $-458 ;abs 0x31c6
3392: 3a 33 jn $-394 ;abs 0x3208
3394: 50 33 jn $-350 ;abs 0x3236
3396: 63 33 jn $-312 ;abs 0x325e
3398: 79 33 jn $-268 ;abs 0x328c
- 339a: 0a 45 mov r5, r10
- 339c: 72 72 subc.b #8,sr ;r2 As==11
- 339e: 6f 72 subc.b #4, r15 ;r2 As==10
- 33a0: 3a 20 jnz $+118 ;abs 0x3416
- 33a2: 00 0a bra @r10
- 33a4: 48 65 addc.b r5, r8
- 33a6: 78 20 jnz $+242 ;abs 0x3498
- 33a8: 66 69 addc.b @r9, r6
- 33aa: 6c 65 addc.b @r5, r12
- 33ac: 20 6c addc @r12,pc
- 33ae: 69 6e addc.b @r14, r9
- 33b0: 65 20 jnz $+204 ;abs 0x347c
- 33b2: 6e 75 subc.b @r5, r14
- 33b4: 6d 3a jl $-804 ;abs 0x3090
- 33b6: 20 00 0a 3e bra &0x03e0a
- 33ba: 00 0a bra @r10
- 33bc: 43 6f .word 0x6f43; ???? Illegal as 2-op instr
- 33be: 6d 70 subc.b pc, r13
- 33c0: 6c 65 addc.b @r5, r12
- 33c2: 74 65 addc.b @r5+, r4
- 33c4: 3a 20 jnz $+118 ;abs 0x343a
- 33c6: 00 62 addcsr,pc
- 33c8: 79 74 subc.b @r4+, r9
- 33ca: 65 73 subc.b #2, r5 ;r3 As==10
- 33cc: 20 70 subc pc,pc
- 33ce: 72 6f addc.b @r15+,sr
- 33d0: 67 72 subc.b #4, r7 ;r2 As==10
- 33d2: 61 6d addc.b @r13,sp
- 33d4: 6d 65 addc.b @r5, r13
- 33d6: 64 2e jc $-822 ;abs 0x30a0
- 33d8: 00 00 bra pc
-
- TMR0_INT:
+
+;string "\nError: "
+ 339a: 0a 45
+ 339c: 72 72
+ 339e: 6f 72
+ 33a0: 3a 20
+ 33a2: 00
+
+;string "\nHex file line num: "
+ 33a3: 0a
+ 33a4: 48 65
+ 33a6: 78 20
+ 33a8: 66 69
+ 33aa: 6c 65
+ 33ac: 20 6c
+ 33ae: 69 6e
+ 33b0: 65 20
+ 33b2: 6e 75
+ 33b4: 6d 3a
+ 33b6: 20 00
+
+;string "\n>"
+ 33b8: 0a 3e
+ 33ba: 00
+
+;string "\nComplete: "
+ 33bb: 0a
+ 33bc: 43 6f
+ 33be: 6d 70
+ 33c0: 6c 65
+ 33c2: 74 65
+ 33c4: 3a 20
+ 33c6: 00
+
+;string "bytes programmed."
+ 33c7: 62
+ 33c8: 79 74
+ 33ca: 65 73
+ 33cc: 20 70
+ 33ce: 72 6f
+ 33d0: 67 72
+ 33d2: 61 6d
+ 33d4: 6d 65
+ 33d6: 64 2e
+ 33d8: 00
+;alignment padding byte
+ 33d9: 00
+
+
+
+
+;-----------------------------------------------------------------------
+TMR0_INT:
33da: 0f 12 push r15
33dc: 0e 12 push r14
33de: 0d 12 push r13
33f2: 2f 93 cmp #2, r15 ;r3 As==10
33f4: 47 20 jnz $+144 ;abs 0x3484
33f6: a2 c2 00 1c bic #4, &TMR0_CR ;r2 As==10
- 33fa: 92 93 7a 45 cmp #1, &0x457a ;r3 As==01
+ 33fa: 92 93 7a 45 cmp #1, &error ;&0x457a ;r3 As==01
33fe: 22 24 jz $+70 ;abs 0x3444
3400: 3f 40 9a 33 mov #13210, r15 ;#0x339a
3404: b0 12 ea 32 call #PrintString ;0x32ea
- 3408: 1f 42 7a 45 mov &0x457a,r15
+ 3408: 1f 42 7a 45 mov &error, r15 ;&0x457a,r15
340c: 0f 5f rla r15
340e: 1f 4f 8c 33 mov 13196(r15),r15 ;0x338c(r15)
3412: b0 12 ea 32 call #PrintString ;0x32ea
3416: 3f 40 a3 33 mov #13219, r15 ;#0x33a3
341a: b0 12 ea 32 call #PrintString ;0x32ea
341e: 1f 42 02 40 mov &0x4002,r15
- 3422: b0 12 50 3e call #0x3e50
+ 3422: b0 12 50 3e call #printNumber ;#0x3e50
3426: 3f 40 b8 33 mov #13240, r15 ;#0x33b8
342a: b0 12 ea 32 call #PrintString ;0x32ea
- 342e: b0 12 24 32 call #0x3224
+ 342e: b0 12 24 32 call #waitForUARTEmpty ;#0x3224
3432: b0 12 76 31 call #0x3176
3436: 92 43 04 1c mov #1, &TMR0_CNT ;r3 As==01
343a: 1f 42 02 1c mov &TMR0_SR,r15
3444: 3f 40 bb 33 mov #13243, r15 ;#0x33bb
3448: b0 12 ea 32 call #PrintString ;0x32ea
344c: 1f 42 08 40 mov &0x4008,r15
- 3450: b0 12 50 3e call #0x3e50
+ 3450: b0 12 50 3e call #printNumber ;#0x3e50
3454: 3f 40 c7 33 mov #13255, r15 ;#0x33c7
3458: b0 12 ea 32 call #PrintString ;0x32ea
345c: e4 3f jmp $-54 ;abs 0x3426
3466: 98 4a
3468: 0d 20 jnz $+28 ;abs 0x3484
346a: 7f 40 43 00 mov.b #67, r15 ;#0x0043
- 346e: b0 12 a8 32 call #0x32a8
+ 346e: b0 12 a8 32 call #emit ;#0x32a8
3472: 82 43 98 4a mov #0, &0x4a98 ;r3 As==00
3476: 06 3c jmp $+14 ;abs 0x3484
3478: 82 43 72 44 mov #0, &0x4472 ;r3 As==00
347c: 7f 40 15 00 mov.b #21, r15 ;#0x0015
- 3480: b0 12 a8 32 call #0x32a8
+ 3480: b0 12 a8 32 call #emit ;#0x32a8
3484: 3c 41 pop r12
3486: 3d 41 pop r13
3488: 3e 41 pop r14
348a: 3f 41 pop r15
348c: 00 13 reti
+;end TMR0_INT
+;-----------------------------------------------------------------------
+
+
;-----------------------------------------------------------------------
-;
UART_ISR:
348e: 0f 12 push r15
3490: 0e 12 push r14
;end #UART_ISR
;-----------------------------------------------------------------------
+
+
+;-----------------------------------------------------------------------
+toUpper:
34d8: cf 93 00 00 tst.b 0(r15) ;CRCDI_L(r15)
34dc: 0c 24 jz $+26 ;abs 0x34f6
34de: 6e 4f mov.b @r15, r14
34f0: cf 93 00 00 tst.b 0(r15) ;CRCDI_L(r15)
34f4: f4 23 jnz $-22 ;abs 0x34de
34f6: 30 41 ret
+;end toUpper
+;-----------------------------------------------------------------------
+
+
+
+;-----------------------------------------------------------------------
+strcmpm:
34f8: cf 93 00 00 tst.b 0(r15) ;CRCDI_L(r15)
34fc: 0e 24 jz $+30 ;abs 0x351a
34fe: ce 93 00 00 tst.b 0(r14) ;CRCDI_L(r14)
351c: 30 41 ret
351e: 1f 43 mov #1, r15 ;r3 As==01
3520: 30 41 ret
- 3522: 45 52 add.bsr, r5
- 3524: 41 53 add.b #0,sp ;r3 As==00
- 3526: 45 00 rrcm.a #1, r5
- 3528: 53 45 .word 0x4553; ???? Illegal as 2-op instr
- 352a: 43 54 .word 0x5443; ???? Illegal as 2-op instr
- 352c: 4f 52 add.bsr, r15
- 352e: 20 45 br @r5
- 3530: 52 41 53 45 mov.b 17747sp)sr ;0x4553sp)
- 3534: 20 00 57 52 bra &0x05257
- 3538: 49 54 add.b r4, r9
- 353a: 45 20 jnz $+140 ;abs 0x35c6
- 353c: 00 52 addsr,pc
- 353e: 45 41 mov.bsp, r5
- 3540: 44 20 jnz $+138 ;abs 0x35ca
- 3542: 00 49 br r9
- 3544: 44 00 rrcm.a #1, r4
- 3546: 53 54 .word 0x5453; ???? Illegal as 2-op instr
- 3548: 41 52 add.bsr,sp
- 354a: 54 00 rrcm #1, r4
- 354c: 52 45 53 45 mov.b 17747(r5)sr ;0x4553(r5)
- 3550: 54 00 rrcm #1, r4
- 3552: 52 45 2d 42 mov.b 16941(r5)sr ;0x422d(r5)
- 3556: 41 55 add.b r5,sp
- 3558: 44 00 rrcm.a #1, r4
- 355a: 46 52 add.bsr, r6
- 355c: 45 41 mov.bsp, r5
- 355e: 44 20 jnz $+138 ;abs 0x35e8
- 3560: 00 00 bra pc
+;end strcmpm
+;-----------------------------------------------------------------------
+
+
+;string commands[0] = "ERASE"
+ 3522: 45 52
+ 3524: 41 53
+ 3526: 45 00
+
+;string commands[1] = "SECTOR ERASE "
+ 3528: 53 45
+ 352a: 43 54
+ 352c: 4f 52
+ 352e: 20 45
+ 3530: 52 41
+ 3532: 53 45
+ 3534: 20 00
+
+;string commands[2] = "WRITE "
+ 3536: 57 52
+ 3538: 49 54
+ 353a: 45 20
+ 353c: 00
+
+;string commands[3] = "READ "
+ 353d: 52
+ 353e: 45 41
+ 3540: 44 20
+ 3542: 00
+
+;string commands[4] = "ID"
+ 3543: 49
+ 3544: 44 00
+
+;string commands[5] = "START"
+ 3546: 53 54
+ 3548: 41 52
+ 354a: 54 00
+
+;string commands[6] = "RESET"
+ 354c: 52 45
+ 354d: 53 45
+ 3550: 54 00
+
+;string commands[7] = "RE-BAUD"
+ 3552: 52 45
+ 3554: 2d 42
+ 3556: 41 55
+ 3558: 44 00
+
+;string commands[8] = "FREAD"
+ 355a: 46 52
+ 355c: 45 41
+ 355e: 44 20
+ 3560: 00 00
+
+
+
3562: 22 35 jge $+582 ;abs 0x37a8
3564: 28 35 jge $+594 ;abs 0x37b6
3566: 36 35 jge $+622 ;abs 0x37d4
356e: 4c 35 jge $+666 ;abs 0x3808
3570: 52 35 jge $+678 ;abs 0x3816
3572: 5a 35 jge $+694 ;abs 0x3828
+
+
+;-----------------------------------------------------------------------
+parseCommands:
3574: 0b 12 push r11
3576: 0a 12 push r10
3578: 0a 4f mov r15, r10
357e: 0f 5f rla r15
3580: 1e 4f 62 35 mov 13666(r15),r14 ;0x3562(r15)
3584: 0f 4a mov r10, r15
- 3586: b0 12 f8 34 call #0x34f8
+ 3586: b0 12 f8 34 call #strcmpm ;#0x34f8
358a: 0f 93 tst r15
358c: 06 24 jz $+14 ;abs 0x359a
358e: 1b 53 inc r11
359e: 3a 41 pop r10
35a0: 3b 41 pop r11
35a2: 30 41 ret
- 35a4: 0a 45 mov r5, r10
- 35a6: 72 61 addc.b @r1+,sr
- 35a8: 73 65 .word 0x6573; ???? Illegal as 2-op instr
- 35aa: 20 43 br #2 ;r3 As==10
- 35ac: 6f 6d addc.b @r13, r15
- 35ae: 70 6c addc.b @r12+,pc
- 35b0: 65 74 subc.b @r4, r5
- 35b2: 65 00 53 65 movapc, &0x56553
- 35b6: 6e 64 addc.b @r4, r14
- 35b8: 20 53 incdpc
- 35ba: 70 61 addc.b @r1+,pc
- 35bc: 63 65 .word 0x6563; ???? Illegal as 2-op instr
- 35be: 00 20 jnz $+2 ;abs 0x35c0
- 35c0: 20 00 53 74 bra &0x07453
- 35c4: 61 72 subc.b #4,sp ;r2 As==10
- 35c6: 74 69 addc.b @r9+, r4
- 35c8: 6e 67 addc.b @r7, r14
- 35ca: 20 55 add @r5,pc
- 35cc: 73 65 .word 0x6573; ???? Illegal as 2-op instr
- 35ce: 72 20 jnz $+230 ;abs 0x36b4
- 35d0: 50 72 6f 67 subc.b &0x676fpc
- 35d4: 72 61 addc.b @r1+,sr
- 35d6: 6d 2e jc $-804 ;abs 0x32b2
- 35d8: 2e 2e jc $-930 ;abs 0x3236
- 35da: 0a 00 mova pc, r10
- 35dc: 52 65 73 65 addc.b 25971(r5)sr ;0x6573(r5)
- 35e0: 74 74 subc.b @r4+, r4
- 35e2: 69 6e addc.b @r14, r9
- 35e4: 67 2e jc $-816 ;abs 0x32b4
- 35e6: 2e 2e jc $-930 ;abs 0x3244
- 35e8: 0a 00 mova pc, r10
+;end parseCommands
+;-----------------------------------------------------------------------
+
+
+
+;string "\nErase Complete"
+ 35a4: 0a 45
+ 35a6: 72 61
+ 35a8: 73 65
+ 35aa: 20 43
+ 35ac: 6f 6d
+ 35ae: 70 6c
+ 35b0: 65 74
+ 35b2: 65 00
+
+;string "Send Space"
+ 35b4: 53 65
+ 35b6: 6e 64
+ 35b8: 20 53
+ 35ba: 70 61
+ 35bc: 63 65
+ 35be: 00
+
+;string " "
+ 35bf: 20
+ 35c0: 20 00
+
+;string "Starting User Program...\n"
+ 35c2: 53 74
+ 35c4: 61 72
+ 35c6: 74 69
+ 35c8: 6e 67
+ 35ca: 20 55
+ 35cc: 73 65
+ 35ce: 72 20
+ 35d0: 50 72
+ 35d2: 6f 67
+ 35d4: 72 61
+ 35d6: 6d 2e
+ 35d8: 2e 2e
+ 35da: 0a 00
+
+;string "Resetting...\n"
+ 35dc: 52 65
+ 35de: 73 65
+ 35e0: 74 74
+ 35e2: 69 6e
+ 35e4: 67 2e
+ 35e6: 2e 2e
+ 35e8: 0a 00
;-----------------------------------------------------------------------
-;
readPacket:
35ea: 0b 12 push r11
35ec: 0a 12 push r10
3628: 7f 90 0d 00 cmp.b #13, r15 ;#0x000d
362c: 06 24 jz $+14 ;abs 0x363a
362e: 7f 40 15 00 mov.b #21, r15 ;#0x0015
- 3632: b0 12 a8 32 call #0x32a8
+ 3632: b0 12 a8 32 call #emit ;#0x32a8
3636: 30 40 20 3a br #0x3a20
363a: 4f 4b mov.b r11, r15
363c: fa 3f jmp $-10 ;abs 0x3632
363e: 7f 40 2e 00 mov.b #46, r15 ;#0x002e
- 3642: b0 12 a8 32 call #0x32a8
+ 3642: b0 12 a8 32 call #emit ;#0x32a8
3646: 92 43 0a 40 mov #1, &commandmode ;&0x400a ;r3 As==01
364a: b2 40 03 00 mov #3, &0x4476 ;#0x0003
364e: 76 44
3650: 30 40 20 3a br #0x3a20
- 3654: b2 40 06 00 mov #6, &0x457a ;#CRCRESR_L
+ 3654: b2 40 06 00 mov #6, &error ;&0x457a ;#CRCRESR_L
3658: 7a 45
365a: a2 43 76 44 mov #2, &0x4476 ;r3 As==10
365e: 30 40 20 3a br #0x3a20
3662: 7f 40 06 00 mov.b #6, r15 ;#CRCRESR_L
- 3666: b0 12 a8 32 call #0x32a8
+ 3666: b0 12 a8 32 call #emit ;#0x32a8
366a: f7 3f jmp $-16 ;abs 0x365a
366c: b2 40 04 04 mov #1028, &0x4004 ;#0x0404
3670: 04 40
3694: 1f 92 04 40 cmp &0x4004,r15
3698: c3 2d jc $+904 ;abs 0x3a20
369a: 4f 4b mov.b r11, r15
- 369c: b0 12 2a 3a call #0x3a2a
+ 369c: b0 12 2a 3a call #instantcrc ;#0x3a2a
36a0: bf 3d jmp $+896 ;abs 0x3a20
36a2: 1f 42 00 40 mov &RAMStart,r15
36a6: 0f 5f rla r15
36b6: 0f 5f rla r15
36b8: 1f 4f 72 31 mov 12658(r15),r15 ;0x3172(r15)
36bc: 5d 4f 01 00 mov.b 1(r15), r13 ;CRCDI_H(r15)
- 36c0: 1e 42 96 4a mov &0x4a96,r14
+ 36c0: 1e 42 96 4a mov &packetNum, r14 ;&0x4a96,r14
36c4: 0d 9e cmp r14, r13
36c6: 17 24 jz $+48 ;abs 0x36f6
36c8: 0d 9e cmp r14, r13
36d4: 9c 4b
36d6: 09 28 jnc $+20 ;abs 0x36ea
36d8: 7f 40 18 00 mov.b #24, r15 ;#0x0018
- 36dc: b0 12 a8 32 call #0x32a8
- 36e0: 82 43 52 40 mov #0, &0x4052 ;r3 As==00
+ 36dc: b0 12 a8 32 call #emit ;#0x32a8
+ 36e0: 82 43 52 40 mov #0, &crc ;&0x4052 ;r3 As==00
36e4: 82 43 72 44 mov #0, &0x4472 ;r3 As==00
36e8: 9b 3d jmp $+824 ;abs 0x3a20
36ea: 7f 40 15 00 mov.b #21, r15 ;#0x0015
36ee: f6 3f jmp $-18 ;abs 0x36dc
36f0: 7f 40 06 00 mov.b #6, r15 ;#CRCRESR_L
36f4: 9e 3f jmp $-194 ;abs 0x3632
- 36f6: 1d 42 52 40 mov &0x4052,r13
+ 36f6: 1d 42 52 40 mov &crc, r13 ;&0x4052,r13
36fa: 1e 42 72 44 mov &0x4472,r14
- 36fe: b0 12 58 3a call #0x3a58
+ 36fe: b0 12 58 3a call #comparecrc ;#0x3a58
3702: 0f 93 tst r15
3704: f2 27 jz $-26 ;abs 0x36ea
3706: 1b 42 00 40 mov &RAMStart,r11
370e: 0f 4b mov r11, r15
3710: 1f e3 xor #1, r15 ;r3 As==01
3712: 82 4f 00 40 mov r15, &RAMStart
- 3716: 1f 42 96 4a mov &0x4a96,r15
+ 3716: 1f 42 96 4a mov &packetNum, r15 ;&0x4a96,r15
371a: 1f 53 inc r15
- 371c: c2 4f 96 4a mov.b r15, &0x4a96
+ 371c: c2 4f 96 4a mov.b r15, &packetNum ;&0x4a96
3720: c2 43 97 4a mov.b #0, &0x4a97 ;r3 As==00
3724: 7f 40 06 00 mov.b #6, r15 ;#CRCRESR_L
- 3728: b0 12 a8 32 call #0x32a8
- 372c: 82 43 52 40 mov #0, &0x4052 ;r3 As==00
+ 3728: b0 12 a8 32 call #emit ;#0x32a8
+ 372c: 82 43 52 40 mov #0, &crc ;&0x4052 ;r3 As==00
3730: 82 43 72 44 mov #0, &0x4472 ;r3 As==00
3734: 0b 5b rla r11
3736: 0e 4a mov r10, r14
3738: 1f 4b 72 31 mov 12658(r11),r15 ;0x3172(r11)
- 373c: b0 12 72 3a call #0x3a72
+ 373c: b0 12 72 3a call #readLine ;#0x3a72
3740: cf 3f jmp $-96 ;abs 0x36e0
3742: b2 40 84 00 mov #132, &0x4004 ;#0x0084
3746: 04 40
3754: cf 4b 00 00 mov.b r11, 0(r15) ;CRCDI_L(r15)
3758: 92 53 72 44 inc &0x4472
375c: 4f 4b mov.b r11, r15
- 375e: b0 12 a8 32 call #0x32a8
+ 375e: b0 12 a8 32 call #emit ;#0x32a8
3762: 7b 92 cmp.b #8, r11 ;r2 As==11
3764: 53 25 jz $+680 ;abs 0x3a0c
3766: 7b 90 0a 00 cmp.b #10, r11 ;#0x000a
376c: 7b 90 0d 00 cmp.b #13, r11 ;#0x000d
3770: 57 21 jnz $+688 ;abs 0x3a20
3772: 7f 40 0a 00 mov.b #10, r15 ;#0x000a
- 3776: b0 12 a8 32 call #0x32a8
+ 3776: b0 12 a8 32 call #emit ;#0x32a8
377a: 1f 42 72 44 mov &0x4472,r15
377e: cf 43 7c 46 mov.b #0, 18044(r15);r3 As==00, 0x467c(r15)
3782: 0f 4a mov r10, r15
- 3784: b0 12 d8 34 call #0x34d8
+ 3784: b0 12 d8 34 call #toUpper ;#0x34d8
3788: 0f 4a mov r10, r15
- 378a: b0 12 74 35 call #0x3574
+ 378a: b0 12 74 35 call #parseCommands ;#0x3574
378e: 3f 90 0a 00 cmp #10, r15 ;#0x000a
3792: 1e 2c jc $+62 ;abs 0x37d0
3794: 0f 5f rla r15
37aa: 62 39 jl $+710 ;abs 0x3a70
37ac: 68 39 jl $+722 ;abs 0x3a7e
37ae: 0f 43 clr r15
- 37b0: b0 12 00 3e call #0x3e00
+ 37b0: b0 12 00 3e call #eraseSector ;#0x3e00
37b4: 1f 43 mov #1, r15 ;r3 As==01
- 37b6: b0 12 00 3e call #0x3e00
+ 37b6: b0 12 00 3e call #eraseSector ;#0x3e00
37ba: 2f 43 mov #2, r15 ;r3 As==10
- 37bc: b0 12 00 3e call #0x3e00
+ 37bc: b0 12 00 3e call #eraseSector ;#0x3e00
37c0: 3f 40 03 00 mov #3, r15 ;#0x0003
- 37c4: b0 12 00 3e call #0x3e00
+ 37c4: b0 12 00 3e call #eraseSector ;#0x3e00
37c8: 3f 40 a4 35 mov #13732, r15 ;#0x35a4
37cc: b0 12 ea 32 call #PrintString ;0x32ea
37d0: 3f 40 b8 33 mov #13240, r15 ;#0x33b8
37dc: 82 43 0a 40 mov #0, &commandmode ;&0x400a ;r3 As==00
37e0: 81 3f jmp $-252 ;abs 0x36e4
37e2: 7f 40 3f 00 mov.b #63, r15 ;#0x003f
- 37e6: b0 12 a8 32 call #0x32a8
+ 37e6: b0 12 a8 32 call #emit ;#0x32a8
37ea: f2 3f jmp $-26 ;abs 0x37d0
37ec: 5f 42 89 46 mov.b &0x4689,r15
37f0: 3f f0 0f 00 and #15, r15 ;#0x000f
- 37f4: b0 12 00 3e call #0x3e00
+ 37f4: b0 12 00 3e call #eraseSector ;#0x3e00
37f8: eb 3f jmp $-40 ;abs 0x37d0
37fa: 2e 42 mov #4, r14 ;r2 As==10
37fc: 3f 40 82 46 mov #18050, r15 ;#0x4682
3880: a7 3f jmp $-176 ;abs 0x37d0
3882: 3f 40 b4 35 mov #13748, r15 ;#0x35b4
3886: b0 12 ea 32 call #PrintString ;0x32ea
- 388a: b0 12 24 32 call #0x3224
+ 388a: b0 12 24 32 call #waitForUARTEmpty ;#0x3224
388e: d3 3f jmp $-88 ;abs 0x3836
3890: 2e 42 mov #4, r14 ;r2 As==10
3892: 3f 40 81 46 mov #18049, r15 ;#0x4681
38d0: 39 b0 07 00 bit #7, r9 ;#CRCRESR_L
38d4: 0b 20 jnz $+24 ;abs 0x38ec
38d6: 7f 40 0a 00 mov.b #10, r15 ;#0x000a
- 38da: b0 12 a8 32 call #0x32a8
+ 38da: b0 12 a8 32 call #emit ;#0x32a8
38de: 0f 4b mov r11, r15
- 38e0: b0 12 fe 3e call #0x3efe
+ 38e0: b0 12 fe 3e call #printHexWord ;#0x3efe
38e4: 3f 40 bf 35 mov #13759, r15 ;#0x35bf
38e8: b0 12 ea 32 call #PrintString ;0x32ea
38ec: 0f 4b mov r11, r15
38ee: 2b 53 incd r11
38f0: 2f 4f mov @r15, r15
- 38f2: b0 12 fe 3e call #0x3efe
+ 38f2: b0 12 fe 3e call #printHexWord ;#0x3efe
38f6: 19 53 inc r9
38f8: 09 98 cmp r8, r9
38fa: ea 2b jnc $-42 ;abs 0x38d0
38fc: 69 3f jmp $-300 ;abs 0x37d0
38fe: 2f 4b mov @r11, r15
- 3900: b0 12 fe 3e call #0x3efe
+ 3900: b0 12 fe 3e call #printHexWord ;#0x3efe
3904: 65 3f jmp $-308 ;abs 0x37d0
3906: 1f 42 40 26 mov &0x2640,r15
- 390a: b0 12 fe 3e call #0x3efe
+ 390a: b0 12 fe 3e call #printHexWord ;#0x3efe
390e: 1f 42 42 26 mov &0x2642,r15
- 3912: b0 12 fe 3e call #0x3efe
+ 3912: b0 12 fe 3e call #printHexWord ;#0x3efe
3916: 1f 42 44 26 mov &0x2644,r15
- 391a: b0 12 fe 3e call #0x3efe
+ 391a: b0 12 fe 3e call #printHexWord ;#0x3efe
391e: 1f 42 46 26 mov &0x2646,r15
3922: ee 3f jmp $-34 ;abs 0x3900
3924: 3f 40 c2 35 mov #13762, r15 ;#0x35c2
3928: b0 12 ea 32 call #PrintString ;0x32ea
- 392c: b0 12 24 32 call #0x3224
+ 392c: b0 12 24 32 call #waitForUARTEmpty ;#0x3224
3930: 32 c2 dint
3932: 82 43 00 22 mov #0, &UART0_CR ;r3 As==00
3936: b2 40 00 02 mov #512, &TMR0_CR ;#0x0200
3946: 44 3f jmp $-374 ;abs 0x37d0
3948: 3f 40 dc 35 mov #13788, r15 ;#0x35dc
394c: b0 12 ea 32 call #PrintString ;0x32ea
- 3950: b0 12 24 32 call #0x3224
+ 3950: b0 12 24 32 call #waitForUARTEmpty ;#0x3224
3954: 32 c2 dint
3956: 82 43 00 22 mov #0, &UART0_CR ;r3 As==00
395a: b2 d0 00 01 bis #256, &0x2600 ;#0x0100
39b2: 3d 40 9e 4b mov #19358, r13 ;#0x4b9e
39b6: 0e 4a mov r10, r14
39b8: 0f 4b mov r11, r15
- 39ba: b0 12 de 3b call #0x3bde
+ 39ba: b0 12 de 3b call #readFlash ;#0x3bde
39be: 09 43 clr r9
39c0: 09 98 cmp r8, r9
39c2: 06 2f jc $-498 ;abs 0x37d0
39c4: 39 b0 0f 00 bit #15, r9 ;#0x000f
39c8: 13 20 jnz $+40 ;abs 0x39f0
39ca: 7f 40 0a 00 mov.b #10, r15 ;#0x000a
- 39ce: b0 12 a8 32 call #0x32a8
+ 39ce: b0 12 a8 32 call #emit ;#0x32a8
39d2: 0e 4b mov r11, r14
39d4: 0f 43 clr r15
39d6: 0f 4e mov r14, r15
39d8: b0 12 e4 3e call #0x3ee4
39dc: 0f 4a mov r10, r15
- 39de: b0 12 fe 3e call #0x3efe
+ 39de: b0 12 fe 3e call #printHexWord ;#0x3efe
39e2: 3f 40 bf 35 mov #13759, r15 ;#0x35bf
39e6: b0 12 ea 32 call #PrintString ;0x32ea
39ea: 3a 50 10 00 add #16, r10 ;#AES_STATE_SIZE
39f0: 5f 49 9e 4b mov.b 19358(r9),r15 ;0x4b9e(r9)
39f4: b0 12 e4 3e call #0x3ee4
39f8: 7f 40 20 00 mov.b #32, r15 ;#AES_KEY_SIZE
- 39fc: b0 12 a8 32 call #0x32a8
+ 39fc: b0 12 a8 32 call #emit ;#0x32a8
3a00: 19 53 inc r9
3a02: 09 98 cmp r8, r9
3a04: df 2b jnc $-64 ;abs 0x39c4
3a0a: d2 3f jmp $-90 ;abs 0x39b0
3a0c: a2 83 72 44 decd &0x4472
3a10: 7f 40 20 00 mov.b #32, r15 ;#AES_KEY_SIZE
- 3a14: b0 12 a8 32 call #0x32a8
+ 3a14: b0 12 a8 32 call #emit ;#0x32a8
3a18: 7f 42 mov.b #8, r15 ;r2 As==11
- 3a1a: b0 12 a8 32 call #0x32a8
+ 3a1a: b0 12 a8 32 call #emit ;#0x32a8
3a1e: a3 3e jmp $-696 ;abs 0x3766
3a20: 38 41 pop r8
3a22: 39 41 pop r9
3a24: 3a 41 pop r10
3a26: 3b 41 pop r11
3a28: 30 41 ret
+;end readPacket
;-----------------------------------------------------------------------
+;-----------------------------------------------------------------------
+instantcrc:
3a2a: 7f f3 and.b #-1, r15 ;r3 As==11
3a2c: 8f 10 swpb r15
- 3a2e: 1f e2 52 40 xor &0x4052,r15
- 3a32: 82 4f 52 40 mov r15, &0x4052
+ 3a2e: 1f e2 52 40 xor &crc, r15 ;&0x4052,r15
+ 3a32: 82 4f 52 40 mov r15, &crc ;&0x4052
3a36: 3e 40 07 00 mov #7, r14 ;#CRCRESR_L
3a3a: 0f 93 tst r15
3a3c: 08 34 jge $+18 ;abs 0x3a4e
3a4c: 02 3c jmp $+6 ;abs 0x3a52
3a4e: 0f 5f rla r15
3a50: f9 3f jmp $-12 ;abs 0x3a44
- 3a52: 82 4f 52 40 mov r15, &0x4052
+ 3a52: 82 4f 52 40 mov r15, &crc ;&0x4052
3a56: 30 41 ret
+;end instantcrc
+;-----------------------------------------------------------------------
+
+
+
+
+;-----------------------------------------------------------------------
+comparecrc:
3a58: 0c 4f mov r15, r12
3a5a: 0c 5e add r14, r12
3a5c: 5f 4c ff ff mov.b -1(r12),r15 ;0xffff(r12)
3a6c: 30 41 ret
3a6e: 1f 43 mov #1, r15 ;r3 As==01
3a70: 30 41 ret
+;end comparecrc
+;-----------------------------------------------------------------------
+
+
+
+
+;-----------------------------------------------------------------------
+readLine:
3a72: 0b 12 push r11
3a74: 0a 12 push r10
3a76: 09 12 push r9
3a7a: 07 12 push r7
3a7c: 07 4f mov r15, r7
3a7e: 0a 4e mov r14, r10
- 3a80: 82 93 10 40 tst &0x4010
+ 3a80: 82 93 10 40 tst &readLineInProgress ;&0x4010
3a84: 05 24 jz $+12 ;abs 0x3a90
- 3a86: 82 43 10 40 mov #0, &0x4010 ;r3 As==00
- 3a8a: b2 40 05 00 mov #5, &0x457a ;#CRCINIRES_L
+ 3a86: 82 43 10 40 mov #0, &readLineInProgress ;&0x4010 ;r3 As==00
+ 3a8a: b2 40 05 00 mov #5, &error ;&0x457a ;#CRCINIRES_L
3a8e: 7a 45
- 3a90: 82 93 7a 45 tst &0x457a
+ 3a90: 82 93 7a 45 tst &error ;&0x457a
3a94: 91 20 jnz $+292 ;abs 0x3bb8
- 3a96: 92 43 10 40 mov #1, &0x4010 ;r3 As==01
+ 3a96: 92 43 10 40 mov #1, &readLineInProgress ;&0x4010 ;r3 As==01
3a9a: 3a 53 add #-1, r10 ;r3 As==11
3a9c: 38 40 03 00 mov #3, r8 ;#0x0003
3aa0: 08 9a cmp r10, r8
3ab4: 12 24 jz $+38 ;abs 0x3ada
3ab6: 7e 90 3a 00 cmp.b #58, r14 ;#0x003a
3aba: 06 24 jz $+14 ;abs 0x3ac8
- 3abc: 1f 42 0e 40 mov &0x400e,r15
+ 3abc: 1f 42 0e 40 mov &length, r15 ;&0x400e,r15
3ac0: cf 4e 12 40 mov.b r14, 16402(r15);0x4012(r15)
- 3ac4: 92 53 0e 40 inc &0x400e
- 3ac8: 82 93 6e 44 tst &0x446e
+ 3ac4: 92 53 0e 40 inc &length ;&0x400e
+ 3ac8: 82 93 6e 44 tst &end ;&0x446e
3acc: 03 20 jnz $+8 ;abs 0x3ad4
3ace: 18 53 inc r8
3ad0: 08 9a cmp r10, r8
3ad2: e8 2b jnc $-46 ;abs 0x3aa4
- 3ad4: 82 43 10 40 mov #0, &0x4010 ;r3 As==00
+ 3ad4: 82 43 10 40 mov #0, &readLineInProgress ;&0x4010 ;r3 As==00
3ad8: 6f 3c jmp $+224 ;abs 0x3bb8
- 3ada: 1e 42 0e 40 mov &0x400e,r14
+ 3ada: 1e 42 0e 40 mov &length, r14 ;&0x400e,r14
3ade: 0e 93 tst r14
3ae0: f3 27 jz $-24 ;abs 0x3ac8
3ae2: 92 53 02 40 inc &0x4002
- 3ae6: 82 93 7a 45 tst &0x457a
+ 3ae6: 82 93 7a 45 tst &error ;&0x457a
3aea: f4 23 jnz $-22 ;abs 0x3ad4
- 3aec: 3f 40 12 40 mov #16402, r15 ;#0x4012
+ 3aec: 3f 40 12 40 mov #line, r15 ;#16402, r15 ;#0x4012
3af0: b0 12 1c 3f call #0x3f1c
3af4: 0f 93 tst r15
3af6: 05 24 jz $+12 ;abs 0x3b02
- 3af8: a2 43 7a 45 mov #2, &0x457a ;r3 As==10
- 3afc: 82 43 0e 40 mov #0, &0x400e ;r3 As==00
+ 3af8: a2 43 7a 45 mov #2, &error ;&0x457a ;r3 As==10
+ 3afc: 82 43 0e 40 mov #0, &length ;&0x400e ;r3 As==00
3b00: e3 3f jmp $-56 ;abs 0x3ac8
- 3b02: 59 42 12 40 mov.b &0x4012,r9
+ 3b02: 59 42 12 40 mov.b &line, r9 ;&0x4012,r9
3b06: 4e 49 mov.b r9, r14
- 3b08: 1d 42 0e 40 mov &0x400e,r13
+ 3b08: 1d 42 0e 40 mov &length, r13 ;&0x400e,r13
3b0c: 3d 50 f6 ff add #-10, r13 ;#0xfff6
3b10: 0f 4d mov r13, r15
3b12: 12 c3 clrc
3b16: 3d 50 0a 00 add #10, r13 ;#0x000a
3b1a: 0e 9f cmp r15, r14
3b1c: 04 24 jz $+10 ;abs 0x3b26
- 3b1e: b2 40 03 00 mov #3, &0x457a ;#0x0003
+ 3b1e: b2 40 03 00 mov #3, &error ;&0x457a ;#0x0003
3b22: 7a 45
3b24: eb 3f jmp $-40 ;abs 0x3afc
3b26: 0b 43 clr r11
3b32: 0f 10 rrc r15
3b34: 0c 9f cmp r15, r12
3b36: 0b 2c jc $+24 ;abs 0x3b4e
- 3b38: 3d 40 12 40 mov #16402, r13 ;#0x4012
+ 3b38: 3d 40 12 40 mov #line, r13 ;#16402, r13 ;#0x4012
3b3c: 6f 4d mov.b @r13, r15
3b3e: 1d 53 inc r13
3b40: 0b 5f add r15, r11
3b5a: 7f f3 and.b #-1, r15 ;r3 As==11
3b5c: 0e 9f cmp r15, r14
3b5e: 03 24 jz $+8 ;abs 0x3b66
- 3b60: a2 42 7a 45 mov #4, &0x457a ;r2 As==10
+ 3b60: a2 42 7a 45 mov #4, &error ;&0x457a ;r2 As==10
3b64: cb 3f jmp $-104 ;abs 0x3afc
3b66: 5f 42 15 40 mov.b &0x4015,r15
3b6a: 6f 93 cmp.b #2, r15 ;r3 As==10
3b74: 82 5f 08 40 add r15, &0x4008
3b78: b0 12 40 3d call #0x3d40
3b7c: bf 3f jmp $-128 ;abs 0x3afc
- 3b7e: 92 43 6e 44 mov #1, &0x446e ;r3 As==01
+ 3b7e: 92 43 6e 44 mov #1, &end ;&0x446e ;r3 As==01
3b82: fa 3f jmp $-10 ;abs 0x3b78
3b84: 6f 93 cmp.b #2, r15 ;r3 As==10
3b86: 08 24 jz $+18 ;abs 0x3b98
3bbe: 3a 41 pop r10
3bc0: 3b 41 pop r11
3bc2: 30 41 ret
+;end readLine
+;-----------------------------------------------------------------------
+
+
+
+;-----------------------------------------------------------------------
+SPISend_TDRE:
3bc4: 0e 4f mov r15, r14
3bc6: 92 b3 06 20 bit #1, &SPI0_SR ;r3 As==01
3bca: fd 27 jz $-4 ;abs 0x3bc6
3bcc: 82 4e 04 20 mov r14, &SPI0_TDR
3bd0: 30 41 ret
- 3bd2: b0 12 c4 3b call #0x3bc4
+;end SPISend_TDRE
+;-----------------------------------------------------------------------
+
+
+
+;-----------------------------------------------------------------------
+SPISend_TXEMPTY
+ 3bd2: b0 12 c4 3b call #SPISend_TDRE ;#0x3bc4
3bd6: a2 b3 06 20 bit #2, &SPI0_SR ;r3 As==10
3bda: fd 27 jz $-4 ;abs 0x3bd6
3bdc: 30 41 ret
+;-----------------------------------------------------------------------
+
+
+
+;-----------------------------------------------------------------------
+readFlash:
3bde: 0b 12 push r11
3be0: 0a 12 push r10
3be2: 09 12 push r9
3bec: 09 4c mov r12, r9
3bee: 92 c3 08 1a bic #1, &PAOUT ;r3 As==01
3bf2: 3f 40 00 03 mov #768, r15 ;#0x0300
- 3bf6: b0 12 c4 3b call #0x3bc4
+ 3bf6: b0 12 c4 3b call #SPISend_TDRE ;#0x3bc4
3bfa: 0e 4a mov r10, r14
3bfc: 0f 4b mov r11, r15
3bfe: 8e 10 swpb r14
3c04: 0e ef xor r15, r14
3c06: 7f f3 and.b #-1, r15 ;r3 As==11
3c08: 0f 4e mov r14, r15
- 3c0a: b0 12 c4 3b call #0x3bc4
+ 3c0a: b0 12 c4 3b call #SPISend_TDRE ;#0x3bc4
3c0e: 0f 4a mov r10, r15
- 3c10: b0 12 c4 3b call #0x3bc4
+ 3c10: b0 12 c4 3b call #SPISend_TDRE ;#0x3bc4
3c14: 0f 4a mov r10, r15
3c16: 7f f3 and.b #-1, r15 ;r3 As==11
3c18: 8f 10 swpb r15
- 3c1a: b0 12 c4 3b call #0x3bc4
+ 3c1a: b0 12 c4 3b call #SPISend_TDRE ;#0x3bc4
3c1e: 0f 43 clr r15
- 3c20: b0 12 c4 3b call #0x3bc4
+ 3c20: b0 12 c4 3b call #SPISend_TDRE ;#0x3bc4
3c24: 0f 43 clr r15
- 3c26: b0 12 c4 3b call #0x3bc4
+ 3c26: b0 12 c4 3b call #SPISend_TDRE ;#0x3bc4
3c2a: 1f 42 02 20 mov &SPI0_RDR,r15
3c2e: c8 4f 00 00 mov.b r15, 0(r8) ;CRCDI_L(r8)
3c32: 18 53 inc r8
3c46: 3a 41 pop r10
3c48: 3b 41 pop r11
3c4a: 30 41 ret
+;end readFlash
+;-----------------------------------------------------------------------
+
+
+
+;-----------------------------------------------------------------------
+waitForFlash:
3c4c: 92 c3 08 1a bic #1, &PAOUT ;r3 As==01
3c50: 3f 40 00 05 mov #1280, r15 ;#0x0500
- 3c54: b0 12 c4 3b call #0x3bc4
+ 3c54: b0 12 c4 3b call #SPISend_TDRE ;#0x3bc4
3c58: 0f 43 clr r15
- 3c5a: b0 12 d2 3b call #0x3bd2
+ 3c5a: b0 12 d2 3b call #SPISend_TXEMPTY ;#0x3bd2
3c5e: 92 d3 08 1a bis #1, &PAOUT ;r3 As==01
3c62: 92 b3 02 20 bit #1, &SPI0_RDR ;r3 As==01
3c66: f2 23 jnz $-26 ;abs 0x3c4c
3c68: 30 41 ret
- 3c6a: b0 12 4c 3c call #0x3c4c
+;end waitForFlash
+;-----------------------------------------------------------------------
+
+
+
+;-----------------------------------------------------------------------
+EnableWriting:
+ 3c6a: b0 12 4c 3c call #waitForFlash ;#0x3c4c
3c6e: 92 c3 08 1a bic #1, &PAOUT ;r3 As==01
3c72: 3f 40 00 06 mov #1536, r15 ;#0x0600
- 3c76: b0 12 d2 3b call #0x3bd2
+ 3c76: b0 12 d2 3b call #SPISend_TXEMPTY ;#0x3bd2
3c7a: 92 d3 08 1a bis #1, &PAOUT ;r3 As==01
3c7e: 30 41 ret
+;end EnableWriting
+;-----------------------------------------------------------------------
+
+
+
+;-----------------------------------------------------------------------
+writeFlash:
3c80: 0b 12 push r11
3c82: 0a 12 push r10
3c84: 09 12 push r9
3c88: 0e 41 movsp, r14
3c8a: 0f 41 movsp, r15
3c8c: 2f 53 incd r15
- 3c8e: b0 12 fc 3c call #0x3cfc
+ 3c8e: b0 12 fc 3c call #checkForPageD ;#0x3cfc
3c92: 09 4f mov r15, r9
3c94: a1 91 02 00 cmp sp, 2sp) ;CRCDIRB_Hsp)
3c98: 2c 24 jz $+90 ;abs 0x3cf2
- 3c9a: b0 12 6a 3c call #0x3c6a
+ 3c9a: b0 12 6a 3c call #Enable Writing ;#0x3c6a
3c9e: 92 c3 08 1a bic #1, &PAOUT ;r3 As==01
3ca2: 3f 40 00 0a mov #2560, r15 ;#0x0a00
- 3ca6: b0 12 c4 3b call #0x3bc4
- 3caa: 1f 42 06 40 mov &0x4006,r15
- 3cae: b0 12 c4 3b call #0x3bc4
- 3cb2: 5f 42 06 40 mov.b &0x4006,r15
+ 3ca6: b0 12 c4 3b call #SPISend_TDRE ;#0x3bc4
+ 3caa: 1f 42 06 40 mov &pageAdr, r15 ;&0x4006,r15
+ 3cae: b0 12 c4 3b call #SPISend_TDRE ;#0x3bc4
+ 3cb2: 5f 42 06 40 mov.b &pageAdr, r15 ;&0x4006,r15
3cb6: 8f 10 swpb r15
- 3cb8: b0 12 c4 3b call #0x3bc4
+ 3cb8: b0 12 c4 3b call #SPISend_TDRE ;#0x3bc4
3cbc: 5f 41 02 00 mov.b 2sp), r15 ;CRCDIRB_Hsp)
3cc0: 8f 10 swpb r15
- 3cc2: b0 12 c4 3b call #0x3bc4
+ 3cc2: b0 12 c4 3b call #SPISend_TDRE ;#0x3bc4
3cc6: 1b 41 02 00 mov 2sp), r11 ;CRCDIRB_Hsp)
3cca: 2b 91 cmp sp, r11
3ccc: 0b 34 jge $+24 ;abs 0x3ce4
3cd4: 6f 4a mov.b @r10, r15
3cd6: 1a 53 inc r10
3cd8: 8f 10 swpb r15
- 3cda: b0 12 c4 3b call #0x3bc4
+ 3cda: b0 12 c4 3b call #SPISend_TDRE ;#0x3bc4
3cde: 1b 53 inc r11
3ce0: 2b 91 cmp sp, r11
3ce2: f8 3b jl $-14 ;abs 0x3cd4
3cf6: 3a 41 pop r10
3cf8: 3b 41 pop r11
3cfa: 30 41 ret
+;end writeFlash
+;-----------------------------------------------------------------------
+
+
+
+;-----------------------------------------------------------------------
+checkForPageD:
3cfc: 0d 43 clr r13
3cfe: cd 93 9a 4a tst.b 19098(r13) ;0x4a9a(r13)
3d02: 04 20 jnz $+10 ;abs 0x3d0c
3d3a: 30 41 ret
3d3c: 1f 43 mov #1, r15 ;r3 As==01
3d3e: 30 41 ret
+;end checkForPageD
+;-----------------------------------------------------------------------
+
+
+
+;-----------------------------------------------------------------------
+writePage:
3d40: 0b 12 push r11
- 3d42: 92 93 9a 4b cmp #1, &0x4b9a ;r3 As==01
+ 3d42: 92 93 9a 4b cmp #1, &start ;&0x4b9a ;r3 As==01
3d46: 40 24 jz $+130 ;abs 0x3dc8
- 3d48: 92 93 6e 44 cmp #1, &0x446e ;r3 As==01
+ 3d48: 92 93 6e 44 cmp #1, &end ;&0x446e ;r3 As==01
3d4c: 36 24 jz $+110 ;abs 0x3dba
3d4e: 5f 42 13 40 mov.b &0x4013,r15
3d52: 1f 52 0c 40 add &0x400c,r15
- 3d56: 82 9f 06 40 cmp r15, &0x4006
+ 3d56: 82 9f 06 40 cmp r15, &pageAdr ;&0x4006
3d5a: 0a 24 jz $+22 ;abs 0x3d70
- 3d5c: b0 12 80 3c call #0x3c80
- 3d60: b0 12 de 3d call #0x3dde
+ 3d5c: b0 12 80 3c call #writeFlash ;#0x3c80
+ 3d60: b0 12 de 3d call #erasePage ;#0x3dde
3d64: 5f 42 13 40 mov.b &0x4013,r15
3d68: 1f 52 0c 40 add &0x400c,r15
- 3d6c: 82 4f 06 40 mov r15, &0x4006
+ 3d6c: 82 4f 06 40 mov r15, &pageAdr ;&0x4006
3d70: 5e 42 14 40 mov.b &0x4014,r14
3d74: 2b 42 mov #4, r11 ;r2 As==10
- 3d76: 3d 40 12 40 mov #16402, r13 ;#0x4012
- 3d7a: 5f 42 12 40 mov.b &0x4012,r15
+ 3d76: 3d 40 12 40 mov #line, r13 ;#16402, r13 ;#0x4012
+ 3d7a: 5f 42 12 40 mov.b &line, r15 ;&0x4012,r15
3d7e: 2f 52 add #4, r15 ;r2 As==10
3d80: 0b 9f cmp r15, r11
3d82: 2b 34 jge $+88 ;abs 0x3dda
3d94: 0a 24 jz $+22 ;abs 0x3daa
3d96: 1e 53 inc r14
3d98: 1b 53 inc r11
- 3d9a: 3d 40 12 40 mov #16402, r13 ;#0x4012
- 3d9e: 5f 42 12 40 mov.b &0x4012,r15
+ 3d9a: 3d 40 12 40 mov #line, r13 ;#16402, r13 ;#0x4012
+ 3d9e: 5f 42 12 40 mov.b &line, r15 ;&0x4012,r15
3da2: 2f 52 add #4, r15 ;r2 As==10
3da4: 0b 9f cmp r15, r11
3da6: ee 3b jl $-34 ;abs 0x3d84
3da8: 18 3c jmp $+50 ;abs 0x3dda
- 3daa: b0 12 80 3c call #0x3c80
- 3dae: b0 12 de 3d call #0x3dde
+ 3daa: b0 12 80 3c call #writeFlash ;#0x3c80
+ 3dae: b0 12 de 3d call #erasePage ;#0x3dde
3db2: 3e 43 mov #-1, r14 ;r3 As==11
- 3db4: 92 53 06 40 inc &0x4006
+ 3db4: 92 53 06 40 inc &pageAdr ;&0x4006
3db8: ee 3f jmp $-34 ;abs 0x3d96
- 3dba: b0 12 80 3c call #0x3c80
- 3dbe: b0 12 de 3d call #0x3dde
- 3dc2: 92 43 7a 45 mov #1, &0x457a ;r3 As==01
+ 3dba: b0 12 80 3c call #writeFlash ;#0x3c80
+ 3dbe: b0 12 de 3d call #erasePage ;#0x3dde
+ 3dc2: 92 43 7a 45 mov #1, &error ;&0x457a ;r3 As==01
3dc6: 09 3c jmp $+20 ;abs 0x3dda
3dc8: 5f 42 13 40 mov.b &0x4013,r15
3dcc: 1f 52 0c 40 add &0x400c,r15
- 3dd0: 82 4f 06 40 mov r15, &0x4006
- 3dd4: 82 43 9a 4b mov #0, &0x4b9a ;r3 As==00
+ 3dd0: 82 4f 06 40 mov r15, &pageAdr ;&0x4006
+ 3dd4: 82 43 9a 4b mov #0, &start ;&0x4b9a ;r3 As==00
3dd8: b7 3f jmp $-144 ;abs 0x3d48
3dda: 3b 41 pop r11
3ddc: 30 41 ret
+;end writePage
+;-----------------------------------------------------------------------
+
+
+
+;-----------------------------------------------------------------------
+erasePage:
3dde: 0f 43 clr r15
3de0: cf 43 9a 4a mov.b #0, 19098(r15);r3 As==00, 0x4a9a(r15)
3de4: 1f 53 inc r15
3de6: 3f 90 00 01 cmp #256, r15 ;#0x0100
3dea: fa 3b jl $-10 ;abs 0x3de0
3dec: 30 41 ret
+;end erasePage
+;-----------------------------------------------------------------------
+
+
+
3dee: 0a 53 add #0, r10 ;r3 As==00
3df0: 65 63 addc.b #2, r5 ;r3 As==10
3df2: 74 6f addc.b @r15+, r4
3dfa: 61 73 subc.b #2,sp ;r3 As==10
3dfc: 65 64 addc.b @r4, r5
3dfe: 00 00 bra pc
+
+
+;-----------------------------------------------------------------------
+eraseSector:
3e00: 0b 12 push r11
3e02: 0b 4f mov r15, r11
- 3e04: b0 12 6a 3c call #0x3c6a
+ 3e04: b0 12 6a 3c call #EnableWriting ;#0x3c6a
3e08: 92 c3 08 1a bic #1, &PAOUT ;r3 As==01
3e0c: 3f 40 00 d8 mov #-10240,r15 ;#0xd800
- 3e10: b0 12 c4 3b call #0x3bc4
+ 3e10: b0 12 c4 3b call #SPISend_TDRE ;#0x3bc4
3e14: 0f 4b mov r11, r15
3e16: 7f f3 and.b #-1, r15 ;r3 As==11
3e18: 8f 10 swpb r15
- 3e1a: b0 12 c4 3b call #0x3bc4
+ 3e1a: b0 12 c4 3b call #SPISend_TDRE ;#0x3bc4
3e1e: 0f 43 clr r15
- 3e20: b0 12 c4 3b call #0x3bc4
+ 3e20: b0 12 c4 3b call #SPISend_TDRE ;#0x3bc4
3e24: 0f 43 clr r15
- 3e26: b0 12 d2 3b call #0x3bd2
+ 3e26: b0 12 d2 3b call #SPISend_TXEMPTY ;#0x3bd2
3e2a: 92 d3 08 1a bis #1, &PAOUT ;r3 As==01
- 3e2e: b0 12 4c 3c call #0x3c4c
+ 3e2e: b0 12 4c 3c call #waitForFlash ;#0x3c4c
3e32: 3f 40 ee 3d mov #15854, r15 ;#0x3dee
3e36: b0 12 ea 32 call #PrintString ;0x32ea
3e3a: 4f 4b mov.b r11, r15
3e3c: 7f 50 30 00 add.b #48, r15 ;#0x0030
- 3e40: b0 12 a8 32 call #0x32a8
+ 3e40: b0 12 a8 32 call #emit ;#0x32a8
3e44: 3f 40 f7 3d mov #15863, r15 ;#0x3df7
3e48: b0 12 ea 32 call #PrintString ;0x32ea
3e4c: 3b 41 pop r11
3e4e: 30 41 ret
+;end eraseSector
+;-----------------------------------------------------------------------
+
+
+
+;-----------------------------------------------------------------------
+printNumber:
3e50: 0b 12 push r11
3e52: 0a 12 push r10
3e54: 09 12 push r9
3e70: 36 40 06 00 mov #6, r6 ;#CRCRESR_L
3e74: 0c 48 mov r8, r12
3e76: 3a 40 0a 00 mov #10, r10 ;#0x000a
- 3e7a: b0 12 c2 3f call #0x3fc2
+ 3e7a: b0 12 c2 3f call #modulus ;#0x3fc2
3e7e: 09 4e mov r14, r9
3e80: 0c 48 mov r8, r12
3e82: 3a 40 0a 00 mov #10, r10 ;#0x000a
- 3e86: b0 12 c2 3f call #0x3fc2
+ 3e86: b0 12 c2 3f call #modulus ;#0x3fc2
3e8a: 08 4c mov r12, r8
3e8c: 0f 46 mov r6, r15
3e8e: 0f 51 addsp, r15
3ea0: 07 93 tst r7
3ea2: 08 34 jge $+18 ;abs 0x3eb4
3ea4: 7f 40 2d 00 mov.b #45, r15 ;#0x002d
- 3ea8: b0 12 a8 32 call #0x32a8
+ 3ea8: b0 12 a8 32 call #emit ;#0x32a8
3eac: 03 3c jmp $+8 ;abs 0x3eb4
3eae: 38 e3 inv r8
3eb0: 18 53 inc r8
3ec6: 3a 41 pop r10
3ec8: 3b 41 pop r11
3eca: 30 41 ret
+;end printNumber
+;-----------------------------------------------------------------------
+
+
+
+;-----------------------------------------------------------------------
+printHexChar:
3ecc: 3f f0 0f 00 and #15, r15 ;#0x000f
3ed0: 3f 90 0a 00 cmp #10, r15 ;#0x000a
3ed4: 02 38 jl $+6 ;abs 0x3eda
3ed6: 3f 50 07 00 add #7, r15 ;#CRCRESR_L
3eda: 3f 50 30 00 add #48, r15 ;#0x0030
- 3ede: b0 12 a8 32 call #0x32a8
+ 3ede: b0 12 a8 32 call #emit ;#0x32a8
3ee2: 30 41 ret
+;end printHexChar
+;-----------------------------------------------------------------------
+
+
+
+;-----------------------------------------------------------------------
+printHexByte:
3ee4: 0b 12 push r11
3ee6: 0b 4f mov r15, r11
3ee8: 0f 11 rra r15
3eea: 0f 11 rra r15
3eec: 0f 11 rra r15
3eee: 0f 11 rra r15
- 3ef0: b0 12 cc 3e call #0x3ecc
+ 3ef0: b0 12 cc 3e call #printHexChar ;#0x3ecc
3ef4: 0f 4b mov r11, r15
- 3ef6: b0 12 cc 3e call #0x3ecc
+ 3ef6: b0 12 cc 3e call #printHexChar ;#0x3ecc
3efa: 3b 41 pop r11
3efc: 30 41 ret
+;end printHexByte
+;-----------------------------------------------------------------------
+
+
+
+;-----------------------------------------------------------------------
+printHexWord:
3efe: 0b 12 push r11
3f00: 0b 4f mov r15, r11
3f02: 8f 10 swpb r15
3f04: 8f 11 sxt r15
- 3f06: b0 12 e4 3e call #0x3ee4
+ 3f06: b0 12 e4 3e call #printHexByte ;#0x3ee4
3f0a: 0f 4b mov r11, r15
- 3f0c: b0 12 e4 3e call #0x3ee4
+ 3f0c: b0 12 e4 3e call #printHexByte ;#0x3ee4
3f10: 7f 40 20 00 mov.b #32, r15 ;#AES_KEY_SIZE
- 3f14: b0 12 a8 32 call #0x32a8
+ 3f14: b0 12 a8 32 call #emit ;#0x32a8
3f18: 3b 41 pop r11
3f1a: 30 41 ret
+;end printHexWord
+;-----------------------------------------------------------------------
+
+
+
+;-----------------------------------------------------------------------
+ASCIItoBin:
3f1c: 0b 12 push r11
3f1e: 0a 12 push r10
3f20: 0b 4f mov r15, r11
3fa0: 3a 41 pop r10
3fa2: 3b 41 pop r11
3fa4: 30 41 ret
+;end ASCIItoBin
+;-----------------------------------------------------------------------
- divide:
- ;r12 = divide(r12, r14)
+;-----------------------------------------------------------------------
+divide:
+;r12 = divide(r12, r14)
3fa6: 0e ee xor r14, r14
3fa8: 3b 40 11 00 mov #17, r11 ;#0x0011
3fac: 05 3c jmp $+12 ;abs 0x3fb8
3fbc: 1b 83 dec r11
3fbe: f7 23 jnz $-16 ;abs 0x3fae
3fc0: 30 41 ret
+;end divide
+;-----------------------------------------------------------------------
+
+;-----------------------------------------------------------------------
+modulus:
3fc2: 0d 43 clr r13
3fc4: 3c b0 00 80 bit #-32768,r12 ;#0x8000
3fc8: 03 28 jnc $+8 ;abs 0x3fd0
3ff2: 3c e3 inv r12
3ff4: 1c 53 inc r12
3ff6: 30 41 ret
+;end modulus
+;-----------------------------------------------------------------------
...