From: Dan White Date: Mon, 2 Jan 2012 06:59:46 +0000 (-0600) Subject: Finish asm annotation with function code calls X-Git-Tag: calibrations~385 X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=9515b7f27c8cae9c434f249e78567fa6071bec06;p=430.git Finish asm annotation with function code calls --- diff --git a/rom-label.asm b/rom-label.asm index 1a7afe2..770345a 100644 --- a/rom-label.asm +++ b/rom-label.asm @@ -122,10 +122,23 @@ Symbol Table: 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 @@ -321,6 +334,7 @@ SPINoSwap: 3144: 10 42 fe ff br &0xfffe + ;----------------------------------------------------------------------- ; Bootloader through UART0 gotoMain: @@ -367,19 +381,21 @@ Assembly_Code: 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 @@ -481,14 +497,21 @@ main: ;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 @@ -562,15 +585,20 @@ main: 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 @@ -583,125 +611,174 @@ main: 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 @@ -715,21 +792,21 @@ main: 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 @@ -738,7 +815,7 @@ main: 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 @@ -747,20 +824,23 @@ main: 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 @@ -801,6 +881,10 @@ UART_ISR: ;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 @@ -812,6 +896,13 @@ UART_ISR: 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) @@ -828,34 +919,64 @@ UART_ISR: 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 @@ -865,6 +986,10 @@ UART_ISR: 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 @@ -873,7 +998,7 @@ UART_ISR: 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 @@ -886,41 +1011,59 @@ UART_ISR: 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 @@ -952,22 +1095,22 @@ readPacket: 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 @@ -985,7 +1128,7 @@ readPacket: 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 @@ -996,7 +1139,7 @@ readPacket: 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 @@ -1006,17 +1149,17 @@ readPacket: 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 @@ -1024,18 +1167,18 @@ readPacket: 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 @@ -1046,7 +1189,7 @@ readPacket: 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 @@ -1054,13 +1197,13 @@ readPacket: 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 @@ -1076,13 +1219,13 @@ readPacket: 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 @@ -1091,11 +1234,11 @@ readPacket: 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 @@ -1145,7 +1288,7 @@ readPacket: 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 @@ -1174,33 +1317,33 @@ readPacket: 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 @@ -1211,7 +1354,7 @@ readPacket: 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 @@ -1249,20 +1392,20 @@ readPacket: 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 @@ -1270,7 +1413,7 @@ readPacket: 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 @@ -1279,23 +1422,26 @@ readPacket: 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 @@ -1307,8 +1453,16 @@ readPacket: 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) @@ -1321,6 +1475,14 @@ readPacket: 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 @@ -1328,14 +1490,14 @@ readPacket: 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 @@ -1349,32 +1511,32 @@ readPacket: 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 @@ -1382,7 +1544,7 @@ readPacket: 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 @@ -1394,7 +1556,7 @@ readPacket: 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 @@ -1412,7 +1574,7 @@ readPacket: 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 @@ -1423,7 +1585,7 @@ readPacket: 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 @@ -1453,15 +1615,35 @@ readPacket: 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 @@ -1472,7 +1654,7 @@ readPacket: 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 @@ -1481,17 +1663,17 @@ readPacket: 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 @@ -1505,21 +1687,42 @@ readPacket: 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 @@ -1527,22 +1730,22 @@ readPacket: 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 @@ -1551,7 +1754,7 @@ readPacket: 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 @@ -1565,6 +1768,13 @@ readPacket: 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 @@ -1589,24 +1799,31 @@ readPacket: 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 @@ -1618,34 +1835,46 @@ readPacket: 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 @@ -1655,31 +1884,42 @@ readPacket: 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 @@ -1697,11 +1937,11 @@ readPacket: 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 @@ -1714,7 +1954,7 @@ readPacket: 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 @@ -1730,35 +1970,63 @@ readPacket: 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 @@ -1817,11 +2085,14 @@ readPacket: 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 @@ -1835,10 +2106,15 @@ readPacket: 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 @@ -1863,5 +2139,7 @@ readPacket: 3ff2: 3c e3 inv r12 3ff4: 1c 53 inc r12 3ff6: 30 41 ret +;end modulus +;----------------------------------------------------------------------- ...