📄 utility.lst
字号:
0064 c030 SUBB #48
0066 6b82 STAB 2,SP
611: count++;
0068 ee83 LDX 3,SP
006a 08 INX
006b 6e83 STX 3,SP
612: tx_char0(echo); //send echo to screen
006d e685 LDAB 5,SP
006f 160000 JSR tx_char0
613: i_data=(i_data<<4);
0072 ec8f LDD 15,SP
0074 59 ASLD
0075 59 ASLD
0076 59 ASLD
0077 59 ASLD
0078 6c8f STD 15,SP
614: i_data+=cdata;
007a e682 LDAB 2,SP
007c 87 CLRA
007d e38f ADDD 15,SP
007f 6c8f STD 15,SP
0081 e68c LDAB 12,SP
0083 04118d DBEQ B,*-112 ;abs = 0013
615: }
616: }
617: }
618:
619: if (echo==DOT||echo ==ESC){
0086 e685 LDAB 5,SP
0088 c12e CMPB #46
008a 2704 BEQ *+6 ;abs = 0090
008c c11b CMPB #27
008e 2606 BNE *+8 ;abs = 0096
620: *c_ptr=echo;
0090 ee80 LDX 0,SP
0092 6b00 STAB 0,X
621: return(OK);
0094 204f BRA *+81 ;abs = 00e5
622: }
623:
624: if(count!=0 && echo==CR)
0096 ec83 LDD 3,SP
0098 274e BEQ *+80 ;abs = 00e8
009a e685 LDAB 5,SP
009c c10d CMPB #13
009e 2648 BNE *+74 ;abs = 00e8
625: {
626: for (i=0;i<count;i++)
00a0 c7 CLRB
00a1 87 CLRA
00a2 6c86 STD 6,SP
00a4 2039 BRA *+59 ;abs = 00df
627: {
628: i_data1 = ((i_data)>>((unsigned char)(4*i))&0xf);
00a6 e687 LDAB 7,SP
00a8 58 ASLB
00a9 58 ASLB
00aa ed8f LDY 15,SP
00ac 160000 JSR _ISHRS
00af c40f ANDB #15
00b1 87 CLRA
00b2 6c8d STD 13,SP
629: i_data2=1;
00b4 02 INY
00b5 6d8a STY 10,SP
630: for(j=0;j<i;j++)
00b7 c7 CLRB
00b8 6c88 STD 8,SP
00ba 200d BRA *+15 ;abs = 00c9
631: i_data2 *= 10;
00bc c60a LDAB #10
00be 87 CLRA
00bf ed8a LDY 10,SP
00c1 13 EMUL
00c2 6c8a STD 10,SP
00c4 ee88 LDX 8,SP
00c6 08 INX
00c7 6e88 STX 8,SP
00c9 ec88 LDD 8,SP
00cb ac86 CPD 6,SP
00cd 2ded BLT *-17 ;abs = 00bc
632: *c_ptr+= i_data1*i_data2;
00cf e68e LDAB 14,SP
00d1 a68b LDAA 11,SP
00d3 12 MUL
00d4 ee80 LDX 0,SP
00d6 eb00 ADDB 0,X
00d8 6b00 STAB 0,X
00da ee86 LDX 6,SP
00dc 08 INX
00dd 6e86 STX 6,SP
00df ec86 LDD 6,SP
00e1 ac83 CPD 3,SP
00e3 2dc1 BLT *-61 ;abs = 00a6
633: }
634: return(OK);
00e5 c601 LDAB #1
00e7 21 SKIP1
635: }
636: else
637: return(NOTOK);
00e8 c7 CLRB
638: }
00e9 1bf011 LEAS 17,SP
00ec 3d RTS
639:
640: /*******************************************************************
641: * Display internal memory to screen subroutine
642: * Description : User inputs the internal memory start address
643: * : and end address
644: * :
645: * Example : start_add=0x1000; end_add=0x1200
646: * Input : start_add and end_add
647: * Output : N/A
648: * Modify : register D
649: * Return : status (OK or NOTOK)
650: *********************************************************************/
651: void data_display()
652: {
Function: data_display
Source : D:\Code S12\Utility\S12 Ex5 EEPROM ICD\sources\utility.c
Options : -Env"GENPATH=D:\Code S12\Utility\S12 Ex5 EEPROM ICD;D:\Code S12\Utility\S12 Ex5 EEPROM ICD\bin;D:\Code S12\Utility\S12 Ex5 EEPROM ICD\cmd;D:\Code S12\Utility\S12 Ex5 EEPROM ICD\prm;D:\Code S12\Utility\S12 Ex5 EEPROM ICD\sources;D:\Metrowerks\CodeWarrior MOT_V1.2\lib\HC12c\LIB;D:\Metrowerks\CodeWarrior MOT_V1.2\lib\HC12c\SRC;D:\Metrowerks\CodeWarrior MOT_V1.2\lib\HC12c\INCLUDE" -Env"LIBPATH=D:\Metrowerks\CodeWarrior MOT_V1.2\lib\HC12c\INCLUDE" -Env"OBJPATH=D:\Code S12\Utility\S12 Ex5 EEPROM ICD\bin" -Env"TEXTPATH=D:\Code S12\Utility\S12 Ex5 EEPROM ICD\bin" -Lasm=%n.lst -ObjN="D:\Code S12\Utility\S12 Ex5 EEPROM ICD\S12_Ex5_EEPROM_ICD_Data\Flash_Application\ObjectCode\utility.c.o" -Ol0
0000 1bf1ee LEAS -18,SP
653: unsigned int *word,temp,start_add,end_add,i,j;
654: unsigned int itemp;
655: byte *ptr,add_status,lf;
656:
657: word=&temp;
0003 1a8c LEAX 12,SP
0005 6e8a STX 10,SP
658:
659: printf0("\n\r");
0007 cc0000 LDD #"\012\015"
000a 160000 JSR printf0
660: printf0(" Start Address = \r");
000d cc0000 LDD #"\011Start Address = \015"
0010 160000 JSR data_display:233
661: if(input_word(word)==OK)
0013 260b BNE *+13 ;abs = 0020
662: {
663: start_add = *word;
0015 ee8a LDX 10,SP
0017 ec00 LDD 0,X
0019 6c82 STD 2,SP
664: add_status = OK;
001b c601 LDAB #1
001d 6b8f STAB 15,SP
665: }
001f 8f SKIP2
666: else
667: add_status = NOTOK;
0020 698f CLR 15,SP
668:
669: printf0("\n\r");
0022 cc0000 LDD #"\012\015"
0025 160000 JSR printf0
670: printf0(" End Address = \r");
0028 cc0000 LDD #"\011End Address = \015"
002b 160000 JSR data_display:233
671: if(input_word(word)==OK)
002e 2606 BNE *+8 ;abs = 0036
672: end_add = *word;
0030 ee8a LDX 10,SP
0032 ec00 LDD 0,X
0034 2005 BRA *+7 ;abs = 003b
673: else
674: end_add = start_add+0x100;
0036 ec82 LDD 2,SP
0038 c30100 ADDD #256
003b 6c88 STD 8,SP
675:
676: itemp=end_add-start_add;
003d a382 SUBD 2,SP
003f 6cf010 STD 16,SP
677: if((itemp)>0)
0042 1827009f LBEQ *+163 ;abs = 00e5
678: {
679: ptr=(byte *)start_add; //point to start address
0046 ec82 LDD 2,SP
0048 6c80 STD 0,SP
680: j=16;
004a c610 LDAB #16
004c 87 CLRA
004d 6c86 STD 6,SP
681: for (i=0; i<(end_add-start_add);i++)
004f c7 CLRB
0050 6c84 STD 4,SP
0052 060000 JMP data_display:213
682: {
683: if (j>=16)
0055 ec86 LDD 6,SP
0057 8c0010 CPD #16
005a 251e BCS *+32 ;abs = 007a
684: {
685: printf0("\n\r");
005c cc0000 LDD #"\012\015"
005f 160000 JSR printf0
686: temp=(int)ptr;
0062 ec80 LDD 0,SP
0064 6c8c STD 12,SP
687: hex_asc((byte)(temp>>8));
0066 e68c LDAB 12,SP
0068 160000 JSR hex_asc
688: hex_asc((byte)(temp));
006b e68d LDAB 13,SP
006d 160000 JSR hex_asc
689: printf0(" : \r");
0070 cc0000 LDD #" : \015"
0073 160000 JSR printf0
690: j=0;
0076 c7 CLRB
0077 87 CLRA
0078 6c86 STD 6,SP
691: }
692: hex_asc(*ptr++);
007a ee80 LDX 0,SP
007c e630 LDAB 1,X+
007e 6e80 STX 0,SP
0080 160000 JSR hex_asc
693: tx_char0(' ');
0083 c620 LDAB #32
0085 160000 JSR tx_char0
694: j++;
0088 ee86 LDX 6,SP
008a 08 INX
008b 6e86 STX 6,SP
695: if(j>=16)
008d 8e0010 CPX #16
0090 2532 BCS *+52 ;abs = 00c4
696: {
697: ptr-=16;
0092 ec80 LDD 0,SP
0094 830010 SUBD #16
0097 6c80 STD 0,SP
698: for(lf=0;lf<16;lf++)
0099 698e CLR 14,SP
699: {
700: if((*ptr>='0')&&(*ptr<'z'))
009b ee80 LDX 0,SP
009d e600 LDAB 0,X
009f c130 CMPB #48
00a1 2506 BCS *+8 ;abs = 00a9
00a3 c17a CMPB #122
00a5 2402 BCC *+4 ;abs = 00a9
701: tx_char0(*ptr);
00a7 200b BRA *+13 ;abs = 00b4
702: else if (*ptr==' ')
00a9 e600 LDAB 0,X
00ab c120 CMPB #32
00ad 2603 BNE *+5 ;abs = 00b2
703: tx_char0(' ');
00af c620 LDAB #32
00b1 8f SKIP2
704: else
705: tx_char0('.');
00b2 c62e LDAB #46
00b4 160000 JSR tx_char0
706: *ptr++;
00b7 ee80 LDX 0,SP
00b9 08 INX
00ba 6e80 STX 0,SP
00bc 628e INC 14,SP
00be e68e LDAB 14,SP
00c0 c110 CMPB #16
00c2 25d7 BCS *-39 ;abs = 009b
707: }
708: }
709: if(check_user_abort()==OK)
00c4 160000 JSR check_user_abort
00c7 042106 DBNE B,*+9 ;abs = 00d0
710: i=(end_add-start_add);
00ca ec88 LDD 8,SP
00cc a382 SUBD 2,SP
00ce 6c84 STD 4,SP
00d0 ee84 LDX 4,SP
00d2 08 INX
00d3 6e84 STX 4,SP
00d5 ec88 LDD 8,SP
00d7 a382 SUBD 2,SP
00d9 ac84 CPD 4,SP
00db 1822ff76 LBHI *-134 ;abs = 0055
711: }
712: printf0("\n\r");
00df cc0000 LDD #"\012\015"
00e2 160000 JSR printf0
713: }
714: }
00e5 1bf012 LEAS 18,SP
00e8 3d RTS
00e9 160000 JSR printf0
00ec ec8c LDD 12,SP
00ee 160000 JSR input_word
00f1 53 DECB
00f2 3d RTS
715:
716: /*******************************************************************
717: * init RAM subroutine
718: * Description : Display RAM /Flash data to terminal via RS232
719: * :
720: * Example : N/A
721: * Input : Address
722: * Output : RAM / Flash content
723: * Modify : N/A
724: * Return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -