📄 datapage.lst
字号:
648: - page part of an address in the B register
649: - value to be stored in the X:A registers (X : low 16 bit, A : high 8 bit)
650:
651: Result :
652: - value stored at the address
653: - all registers remains unchanged
654: - all page register still contain the same value
655: --------------------------- _STORE_FAR_24 ----------------------------------*/
656:
657: #ifdef __cplusplus
658: extern "C"
659: #endif
660: #pragma NO_ENTRY
661: #pragma NO_EXIT
662: #pragma NO_FRAME
663:
664: void NEAR _STORE_FAR_24(void) {
Function: _STORE_FAR_24
Source : D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\Sources\datapage.c
Options : -CPUHCS12 -D__NO_FLOAT__ -Env"GENPATH=D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006;D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\bin;D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\prm;D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\cmd;D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\Sources;D:\Program Files\Freescale\CW for HC12 V4.5\lib\HC12c\lib;D:\Program Files\Freescale\CW for HC12 V4.5\lib\HC12c\src;D:\Program Files\Freescale\CW for HC12 V4.5\lib\HC12c\include" -Env"LIBPATH=D:\Program Files\Freescale\CW for HC12 V4.5\lib\HC12c\include" -Env"OBJPATH=D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\bin" -Env"TEXTPATH=D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\bin" -Lasm=%n.lst -Mb -ObjN="D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\9S12DP256_Vector_Remapping_Jul262006_Data\Full_Chip_Simulation\ObjectCode\datapage.c.o"
665: #if USE_SEVERAL_PAGES
666: __asm {
667: PSHX ;// save X register
668: __PIC_JSR(_GET_PAGE_REG)
669: BEQ L_NOPAGE
670:
671: PSHA
672: LDAA 0,X ;// save page register
673: STAB 0,X ;// set page register
674: MOVW 1,SP, 1,Y ;// store the value passed in X
675: MOVB 0,SP, 0,Y ;// store the value passed in A
676: STAA 0,X ;// restore page register
677: PULA ;// restore A register
678: PULX ;// restore X register
679: RTS
680:
681: L_NOPAGE:
682: STX 1,Y ;// store the value passed in X
683: STAA 0,Y ;// store the value passed in X
684: PULX ;// restore X register
685: RTS
686: }
687: #else /* USE_SEVERAL_PAGES */
688: __asm {
689: PSHA ;// save A register
0000 36 [2] PSHA
690: LDAA PAGE_ADDR ;// save page register
0001 9630 [3] LDAA 48
691: STAB PAGE_ADDR ;// set page register
0003 5b30 [2] STAB 48
692: MOVB 0,SP, 0,Y ;// store the value passed in A
0005 180a8040 [5] MOVB 0,SP,0,Y
693: STX 1,Y ;// store the value passed in X
0009 6e41 [2] STX 1,Y
694: STAA PAGE_ADDR ;// restore page register
000b 5a30 [2] STAA 48
695: PULA ;// restore A register
000d 32 [3] PULA
696: RTS
000e 3d [5] RTS
697: }
698: #endif /* USE_SEVERAL_PAGES */
699: }
700: /*--------------------------- _STORE_FAR_32 --------------------------------
701: This runtime routine is used to access paged memory via a runtime function.
702: It may also be used if the compiler option -Cp is not used with the runtime argument.
703:
704: Arguments :
705: - offset part of an address in the Y register
706: - page part of an address is on the stack at 3,SP (just below the return address)
707: - value to be stored in the X:D registers (D : low 16 bit, X : high 16 bit)
708:
709: Result :
710: - value stored at the address
711: - all registers remains unchanged
712: - the page part is removed from the stack
713: - all page register still contain the same value
714: --------------------------- _STORE_FAR_32 ----------------------------------*/
715:
716: #ifdef __cplusplus
717: extern "C"
718: #endif
719: #pragma NO_ENTRY
720: #pragma NO_EXIT
721: #pragma NO_FRAME
722:
723: void NEAR _STORE_FAR_32(void) {
Function: _STORE_FAR_32
Source : D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\Sources\datapage.c
Options : -CPUHCS12 -D__NO_FLOAT__ -Env"GENPATH=D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006;D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\bin;D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\prm;D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\cmd;D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\Sources;D:\Program Files\Freescale\CW for HC12 V4.5\lib\HC12c\lib;D:\Program Files\Freescale\CW for HC12 V4.5\lib\HC12c\src;D:\Program Files\Freescale\CW for HC12 V4.5\lib\HC12c\include" -Env"LIBPATH=D:\Program Files\Freescale\CW for HC12 V4.5\lib\HC12c\include" -Env"OBJPATH=D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\bin" -Env"TEXTPATH=D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\bin" -Lasm=%n.lst -Mb -ObjN="D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\9S12DP256_Vector_Remapping_Jul262006_Data\Full_Chip_Simulation\ObjectCode\datapage.c.o"
724: #if USE_SEVERAL_PAGES
725: __asm {
726: PSHX ;// save X register
727: __PIC_JSR(_GET_PAGE_REG)
728: BEQ L_NOPAGE
729:
730: PSHD
731: LDAA 0,X ;// save page register
732: MOVB 6,SP, 0,X ;// set page register
733: MOVW 2,SP, 0,Y ;// store the value passed in X (high word)
734: MOVW 0,SP, 2,Y ;// store the value passed in D (low word)
735: STAA 0,X ;// restore page register
736: PULD ;// restore A register
737: BRA done
738:
739: L_NOPAGE:
740: MOVW 0,SP, 0,Y ;// store the value passed in X (high word)
741: STD 2,Y ;// store the value passed in D (low word)
742: done:
743: PULX ;// restore X register
744: MOVW 0,SP, 1,+SP ;// move return address
745: RTS
746: }
747: #else /* USE_SEVERAL_PAGES */
748: __asm {
749: PSHD ;// save D register
0000 3b [2] PSHD
750: LDAA PAGE_ADDR ;// save page register
0001 9630 [3] LDAA 48
751: LDAB 4,SP ;// load page part of address
0003 e684 [3] LDAB 4,SP
752: STAB PAGE_ADDR ;// set page register
0005 5b30 [2] STAB 48
753: STX 0,Y ;// store the value passed in X
0007 6e40 [2] STX 0,Y
754: MOVW 0,SP, 2,Y ;// store the value passed in D (low word)
0009 18028042 [5] MOVW 0,SP,2,Y
755: STAA PAGE_ADDR ;// restore page register
000d 5a30 [2] STAA 48
756: PULD ;// restore D register
000f 3a [3] PULD
757: MOVW 0,SP, 1,+SP ;// move return address
0010 180280a0 [5] MOVW 0,SP,1,+SP
758: RTS
0014 3d [5] RTS
759: }
760: #endif /* USE_SEVERAL_PAGES */
761: }
762:
763: /*--------------------------- _FAR_COPY_RC --------------------------------
764: This runtime routine is used to access paged memory via a runtime function.
765: It may also be used if the compiler option -Cp is not used with the runtime argument.
766:
767: Arguments :
768: - offset part of the source int the X register
769: - page part of the source in the A register
770: - offset part of the dest int the Y register
771: - page part of the dest in the B register
772: - number of bytes to be copied is defined by the next 2 bytes after the return address.
773:
774: Result :
775: - memory area copied
776: - no registers are saved, i.e. all registers may be destroyed
777: - all page register still contain the same value as before the call
778: - the function returns after the constant defining the number of bytes to be copied
779:
780:
781: stack-structure at the loop-label:
782: 0,SP : destination offset
783: 2,SP : source page
784: 3,SP : destination page
785: 4,SP : source offset
786: 6,SP : points to length to be copied. This function returns after the size
787:
788: A usual call to this function looks like:
789:
790: struct Huge src, dest;
791: ; ...
792: LDX #src
793: LDAA #PAGE(src)
794: LDY #dest
795: LDAB #PAGE(dest)
796: JSR _FAR_COPY_RC
797: DC.W sizeof(struct Huge)
798: ; ...
799:
800: --------------------------- _FAR_COPY_RC ----------------------------------*/
801:
802: #ifdef __cplusplus
803: extern "C"
804: #endif
805: #pragma NO_ENTRY
806: #pragma NO_EXIT
807: #pragma NO_FRAME
808:
809: void NEAR _FAR_COPY_RC(void) {
Function: _FAR_COPY_RC
Source : D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\Sources\datapage.c
Options : -CPUHCS12 -D__NO_FLOAT__ -Env"GENPATH=D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006;D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\bin;D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\prm;D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\cmd;D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\Sources;D:\Program Files\Freescale\CW for HC12 V4.5\lib\HC12c\lib;D:\Program Files\Freescale\CW for HC12 V4.5\lib\HC12c\src;D:\Program Files\Freescale\CW for HC12 V4.5\lib\HC12c\include" -Env"LIBPATH=D:\Program Files\Freescale\CW for HC12 V4.5\lib\HC12c\include" -Env"OBJPATH=D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\bin" -Env"TEXTPATH=D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\bin" -Lasm=%n.lst -Mb -ObjN="D:\Chg\Tech\FSL_Support\from ChatRoom\9S12DP256_Vector Remapping_Jul262006\9S12DP256_Vector_Remapping_Jul262006_Data\Full_Chip_Simulation\ObjectCode\datapage.c.o"
810: #if USE_SEVERAL_PAGES
811: __asm {
812: DEX ;// source addr-=1, because loop counter ends at 1
813: PSHX ;// save source offset
814: PSHD ;// save both pages
815: DEY ;// destination addr-=1, because loop counter ends at 1
816: PSHY ;// save destination offset
817: LDY 6,SP ;// Load Return address
818: LDX 2,Y+ ;// Load Size to copy
819: STY 6,SP ;// Store adjusted return address
820: loop:
821: LDD 4,SP ;// load source offset
822: LEAY D,X ;// calculate actual source address
823: LDAB 2,SP ;// load source page
824: __PIC_JSR(_LOAD_FAR_8) ;// load 1 source byte
825: PSHB ;// save value
826: LDD 0+1,SP ;// load destination offset
827: LEAY D,X ;// calculate actual destination address
828: PULA ;// restore value
829: LDAB 3,SP ;// load destination page
830: __PIC_JSR(_STORE_FAR_8) ;// store one byte
831: DEX
832: BNE loop
833: LEAS 6,SP ;// release stack
834: _SRET ;// debug info only: This is the last instr of a function with a special return
835: RTS ;// return
836: }
837: #else
838: __asm {
839: PSHD ;// store page registers
0000 3b [2] PSHD
840: TFR X,D
0001 b754 [1] TFR X,D
841: PSHY ;// temporary space
0003 35 [2] PSHY
842: LDY 4,SP ;// load return address
0004 ed84 [3] LDY 4,SP
843: ADDD 2,Y+ ;// calculate source end address. Increment return address
0006 e371 [3] ADDD 2,Y+
844: STY 4,SP
0008 6d84 [2] STY 4,SP
845: PULY
000a 31 [3] PULY
846: PSHD ;// store src end address
000b 3b [2] PSHD
847: LDAB 2,SP ;// reload source page
000c e682 [3] LDAB 2,SP
848: LDAA PAGE_ADDR ;// save page register
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -