📄 spp_dev_b.xap
字号:
MODULE crt0 .LARGE ; Not really, but we need the space for DEBUG; Define the segment layout .SEG VAREND .PACK {INIT, VAR, VAREND}, {H'400, H'800} .PACK {CONST, INITC}, {H'7400, H'D400}; This segment holds stabs debug info and doesn't make it onto bluecore .CSEG DEBUG ORG H'10000; Put labels at selected positions so; we can deduce segment size and placement .SEG INITINIT: .SEG VARVAR: .SEG VARENDVAREND: .SEG CONSTCONST: .SEG INITCINITC:$XAP_AH EQU H'ffe0$XAP_AL EQU H'ffe1$XAP_UXL EQU H'ffe2$XAP_UY EQU H'ffe3; Put the version number at the start of the CONST segment .SEG CONST DC 1541 ; updated by Makefile from syscalls; ****************************************************************************; Startup code; **************************************************************************** .CODE ORG H'0000 ld al,#VAR-INIT ; Size of INIT segment ld ah,#INIT ld x,#INITC bc2 ; AL is now zero ld ah,#VAREND-VAR ; Size of BSS segment beq skip_zero ld x,#VARloop_zero: st al,@(0,x) add x,#1 sub ah,#1 bne loop_zeroskip_zero: ; call init code, normally empty bsr $__init ld ah,#0 ld al,#0 bsr $_main ; Main may exit by returning or by explicitly calling $exit. ; In either case exit code will be in AH ; Note 'real' programs are unlikely to exit. bra $_exit$_abort: ; Exit abnormally ld ah,#1 bra $_exit_exit EQU $_exit ENDMOD MODULE malloc .ENHANCED .CSEG CODE .LARGE$_malloc: DC ((256*3)+9) rtstrapset_1 EQU $trapset_1 ENDMOD malloc MODULE free .ENHANCED .CSEG CODE .LARGE$_free: DC ((256*4)+9) rtstrapset_1 EQU $trapset_1 ENDMOD free MODULE realloc .ENHANCED .CSEG CODE .LARGE$_realloc: DC ((256*5)+9) rtstrapset_1 EQU $trapset_1 ENDMOD realloc MODULE exit .ENHANCED .CSEG CODE .LARGE$_exit: DC ((256*7)+9) rtstrapset_1 EQU $trapset_1 ENDMOD exit MODULE MessageSendLater .ENHANCED .CSEG CODE .LARGE$_MessageSendLater: DC ((256*9)+9) rtstrapset_1 EQU $trapset_1 ENDMOD MessageSendLater MODULE MessageCancelFirst .ENHANCED .CSEG CODE .LARGE$_MessageCancelFirst: DC ((256*10)+9) rtstrapset_1 EQU $trapset_1 ENDMOD MessageCancelFirst MODULE Panic .ENHANCED .CSEG CODE .LARGE$_Panic: DC ((256*14)+9) rtstrapset_1 EQU $trapset_1 ENDMOD Panic MODULE PanicNull .ENHANCED .CSEG CODE .LARGE$_PanicNull: DC ((256*15)+9) rtstrapset_1 EQU $trapset_1 ENDMOD PanicNull MODULE PsStore .ENHANCED .CSEG CODE .LARGE$_PsStore: DC ((256*17)+9) rtstrapset_1 EQU $trapset_1 ENDMOD PsStore MODULE PsRetrieve .ENHANCED .CSEG CODE .LARGE$_PsRetrieve: DC ((256*18)+9) rtstrapset_1 EQU $trapset_1 ENDMOD PsRetrieve MODULE PsFullRetrieve .ENHANCED .CSEG CODE .LARGE$_PsFullRetrieve: DC ((256*21)+9) rtstrapset_1 EQU $trapset_1 ENDMOD PsFullRetrieve MODULE MessagePioTask .ENHANCED .CSEG CODE .LARGE$_MessagePioTask: DC ((256*36)+9) rtstrapset_1 EQU $trapset_1 ENDMOD MessagePioTask MODULE PioDebounce .ENHANCED .CSEG CODE .LARGE$_PioDebounce: DC ((256*37)+9) rtstrapset_1 EQU $trapset_1 ENDMOD PioDebounce MODULE PioGet .ENHANCED .CSEG CODE .LARGE$_PioGet: DC ((256*38)+9) rtstrapset_1 EQU $trapset_1 ENDMOD PioGet MODULE PioSet .ENHANCED .CSEG CODE .LARGE$_PioSet: DC ((256*39)+9) rtstrapset_1 EQU $trapset_1 ENDMOD PioSet MODULE PioSetDir .ENHANCED .CSEG CODE .LARGE$_PioSetDir: DC ((256*41)+9) rtstrapset_1 EQU $trapset_1 ENDMOD PioSetDir MODULE MessageFlushTask .ENHANCED .CSEG CODE .LARGE$_MessageFlushTask: DC ((256*46)+9) rtstrapset_1 EQU $trapset_1 ENDMOD MessageFlushTask MODULE PanicUnlessMalloc .ENHANCED .CSEG CODE .LARGE$_PanicUnlessMalloc: DC ((256*47)+9) rtstrapset_1 EQU $trapset_1 ENDMOD PanicUnlessMalloc MODULE StreamConfigure .ENHANCED .CSEG CODE .LARGE$_StreamConfigure: DC ((256*70)+9) rtstrapset_11 EQU $trapset_11 ENDMOD StreamConfigure MODULE StreamConnect .ENHANCED .CSEG CODE .LARGE$_StreamConnect: DC ((256*71)+9) rtstrapset_11 EQU $trapset_11 ENDMOD StreamConnect MODULE StreamSourceFromSink .ENHANCED .CSEG CODE .LARGE$_StreamSourceFromSink: DC ((256*74)+9) rtstrapset_11 EQU $trapset_11 ENDMOD StreamSourceFromSink MODULE SinkGetBdAddr .ENHANCED .CSEG CODE .LARGE$_SinkGetBdAddr: DC ((256*84)+9) rtstrapset_11 EQU $trapset_11 ENDMOD SinkGetBdAddr MODULE MessageSinkTask .ENHANCED .CSEG CODE .LARGE$_MessageSinkTask: DC ((256*85)+9) rtstrapset_11 EQU $trapset_11 ENDMOD MessageSinkTask MODULE MessageSinkGetTask .ENHANCED .CSEG CODE .LARGE$_MessageSinkGetTask: DC ((256*86)+9) rtstrapset_11 EQU $trapset_11 ENDMOD MessageSinkGetTask MODULE StreamSinksFromBdAddr .ENHANCED .CSEG CODE .LARGE$_StreamSinksFromBdAddr: DC ((256*87)+9) rtstrapset_11 EQU $trapset_11 ENDMOD StreamSinksFromBdAddr MODULE VmSendRfcommPrim .ENHANCED .CSEG CODE .LARGE$_VmSendRfcommPrim: DC ((256*102)+9) rtstrapset_14 EQU $trapset_14 ENDMOD VmSendRfcommPrim MODULE StreamRfcommSink .ENHANCED .CSEG CODE .LARGE$_StreamRfcommSink: DC ((256*103)+9) rtstrapset_14 EQU $trapset_14 ENDMOD StreamRfcommSink MODULE StreamUartSink .ENHANCED .CSEG CODE .LARGE$_StreamUartSink: DC ((256*104)+9) rtstrapset_15 EQU $trapset_15 ENDMOD StreamUartSink MODULE VmSendL2capPrim .ENHANCED .CSEG CODE .LARGE$_VmSendL2capPrim: DC ((256*106)+9) rtstrapset_16 EQU $trapset_16 ENDMOD VmSendL2capPrim MODULE VmSendDmPrim .ENHANCED .CSEG CODE .LARGE$_VmSendDmPrim: DC ((256*107)+9) rtstrapset_16 EQU $trapset_16 ENDMOD VmSendDmPrim MODULE VmSendSdpPrim .ENHANCED .CSEG CODE .LARGE$_VmSendSdpPrim: DC ((256*108)+9) rtstrapset_16 EQU $trapset_16 ENDMOD VmSendSdpPrim MODULE VmGetHandleFromPointer .ENHANCED .CSEG CODE .LARGE$_VmGetHandleFromPointer: DC ((256*109)+9) rtstrapset_16 EQU $trapset_16 ENDMOD VmGetHandleFromPointer MODULE VmGetPointerFromHandle .ENHANCED .CSEG CODE .LARGE$_VmGetPointerFromHandle: DC ((256*110)+9) rtstrapset_16 EQU $trapset_16 ENDMOD VmGetPointerFromHandle MODULE MessageBlueStackTask .ENHANCED .CSEG CODE .LARGE$_MessageBlueStackTask: DC ((256*111)+9) rtstrapset_16 EQU $trapset_16 ENDMOD MessageBlueStackTask MODULE StreamL2capSink .ENHANCED .CSEG CODE .LARGE$_StreamL2capSink: DC ((256*112)+9) rtstrapset_16 EQU $trapset_16 ENDMOD StreamL2capSink MODULE VmUseExtendedBluestackPrimitives .ENHANCED .CSEG CODE .LARGE$_VmUseExtendedBluestackPrimitives: DC ((256*148)+9) rtstrapset_16 EQU $trapset_16 ENDMOD VmUseExtendedBluestackPrimitives MODULE MessageWait .ENHANCED .CSEG CODE .LARGE$_MessageWait: DC ((256*11)+9) rtstrapset_1 EQU $trapset_1 ENDMOD MessageWait MODULE MessageSendConditionally .ENHANCED .CSEG CODE .LARGE$_MessageSendConditionally: DC ((256*12)+9) rtstrapset_1 EQU $trapset_1 ENDMOD MessageSendConditionally MODULE MessageFree .ENHANCED .CSEG CODE .LARGE$_MessageFree: DC ((256*13)+9) rtstrapset_1 EQU $trapset_1 ENDMOD MessageFree MODULE trapset_1 .CSEG CODE .LARGE .ENHANCED$trapset_1: ENDMOD trapset_1 MODULE trapset_11 .CSEG CODE .LARGE .ENHANCED$trapset_11: ENDMOD trapset_11 MODULE trapset_14 .CSEG CODE .LARGE .ENHANCED$trapset_14: ENDMOD trapset_14 MODULE trapset_15 .CSEG CODE .LARGE .ENHANCED$trapset_15: ENDMOD trapset_15 MODULE trapset_16 .CSEG CODE .LARGE .ENHANCED$trapset_16: ENDMOD trapset_16 MODULE e_t_c .ALLe_t_c: ENDMOD MODULE main .LARGE ; really small mode but we need space for debug symbols; GNU C version 3.3.3 (CSR version 25 for xap); compiled by GNU C version 3.2.3 (mingw special 20030504-1).;# options passed: -IC:/BlueLab401/tools/include/firmware;# -IC:/BlueLab401/tools/include/standard;# -IC:/BlueLab401/tools/include/profiles/BlueLab4.0.1-release -iprefix;# -isystem -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=3;# -DDEV_CASIRA -DNO_DEBUG -MD -MQ -mno-leaf-optim -ansi -auxbase-strip -g;# -O -pedantic -Wall -Wmissing-prototypes -Wstrict-prototypes;# -Wsign-compare -Wredundant-decls -Werror -ansi -fno-builtin-memcpy;# options enabled: -fdefer-pop -fthread-jumps -fpeephole -ffunction-cse;# -fkeep-static-consts -fpcc-struct-return -fgcse-lm -fgcse-sm;# -floop-optimize -fcrossjumping -fif-conversion -fif-conversion2;# -fsched-interblock -fsched-spec -fbranch-count-reg -fcprop-registers;# -fcommon -fgnu-linker -fargument-alias -fmerge-constants;# -fzero-initialized-in-bss -fleading-underscore -fident;# -fguess-branch-probability -fmath-errno -ftrapping-math -mpeephole;# -mquiet-mode -minline-block-copy-mode -menhanced-mode -mload-cache-mode;# -mbitfield-mode -mtest4 .ENHANCED .CODE$_getAppTask: enter #1?LBB_getAppTask: ld AH,#(_theSppApp)?LBE_getAppTask: leave #1_unhandledSppState: enter #1?LBB_unhandledSppState:?LBE_unhandledSppState: leave #1$_setSppState: enter #1?LBB_setSppState: st AH,@_theSppApp+H'0006 cmp AH,#H'0004 bne ?L6 ld AH,#H'0000 bra (?L8)?L6: ld AH,#H'0001?L8: bsr $_ledsPlay?LBE_setSppState: leave #1_app_handler: enter #8?LBB_app_handler:?LBB2: ld AH,@_theSppApp+H'0006 st AH,@(-1,Y) cmp AL,#H'6F05 beq ?L46 cmp AL,#(H'0001+H'6F05) bcc ?L84 cmp AL,#H'6F01 beq ?L25 cmp AL,#(H'0001+H'6F01) bcc ?L85 cmp AL,#H'03E8 beq ?L72 cmp AL,#(H'0001+H'03E8) bcc ?L86 cmp AL,#H'0000 beq ?L55 bra (?L10)?L86: cmp AL,#H'6F00 beq ?L15 bra (?L10)?L85: cmp AL,#H'6F02 beq ?L37 bra (?L10)?L84: cmp AL,#H'701F beq ?L68 cmp AL,#(H'0001+H'701F) bcc ?L87 cmp AL,#H'701B beq ?L66 cmp AL,#(H'0001+H'701B) bcc ?L88 cmp AL,#H'7000 beq ?L12 bra (?L10)?L88: cmp AL,#H'701E beq ?L64 bra (?L10)?L87: cmp AL,#H'7025 beq ?L65 cmp AL,#(H'0001+H'7025) bcc ?L10 cmp AL,#H'7020 beq ?L69 bra (?L10)?L12: ld X,@(H'0008,Y) tst @(0,X) bne ?L13 bsr $_sppDevInit bra (?L10)?L13:; bsr $_Panic DC ((256*14)+9) bra (?L10)?L15: cmp AH,#H'0000 bne ?L62 ld X,@(H'0008,Y) tst @(H'0001,X) bne ?L10 ld AH,#H'0001 bsr $_setSppState bra (?L77)?L25: ld AH,@(H'0008,Y)?LBB3: st AH,@(H'0005,Y) ld X,@(-1,Y) cmp X,#(H'0001+H'0004) bcc ?L62 ld X,@(?JTBASE36,X) brxl .SEG CONST?JTBASE36:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -