⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cstartup.lst

📁 740的程序的参考程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
    144    000008          ;   1   IES not used
    145    000008          ;   0   First use of IES, need to setup IES
    146    000008          ;  <0   IES already setup and used
    147    000008          ;---------------------------------------------------
                           ------------;
    148    000008 A901             LDA  #1
    149    00000A 85..             STA  zp:?IES_USAGE
    150    00000C          #endif
    151    00000C          
    152    00000C          ;---------------------------------------------------
                           ------------;
    153    00000C          ; If hardware must be initiated from assembly or if
                            interrupts  ;
    154    00000C          ; should be on when reaching main, this is the place
                            to insert  ;
    155    00000C          ; such code.                                        
                                       ;
    156    00000C          ;                                                   
                                       ;
    157    00000C          ; NOTE: You probably want to initialize the mode
                            register here. ;
    158    00000C          ;---------------------------------------------------
                           ------------;
    159    00000C          ;---------------------------------------------------
                           ------------;
    160    00000C          ; Call __low_level_init to perform initialization
                            before        ;
    161    00000C          ; initializing segments and calling main.           
                                       ;
    162    00000C          ; If the function returns 0 no segment initializatio
                           n should    ;
    163    00000C          ; take place.                                       
                                       ;
    164    00000C          ;                                                   
                                       ;
    165    00000C          ; Link with your own version of __low_level_init to
                            override    ;
    166    00000C          ; the default action: to do nothing but return 1.   
                                       ;
    167    00000C          ;---------------------------------------------------
                           ------------;
    168    00000C          
    169    00000C A2..             LDX  #SFE(EXPR_STACK)        ; set up
                                                                 expression
                                                                 stack
    170    00000E 20....           JSR  __low_level_init
    171    000011 A8               TAY                          ; test return
                                                                 value
    172    000012 F005             BEQ  skip_seg_init
    173    000014          
    174    000014          
    175    000014          ;---------------------------------------------------
                           ------------;
    176    000014          ; If it is not a requirement that static/global data
                            is set     ;
    177    000014          ; to zero or to some explicit value at startup, the
                            following   ;
    178    000014          ; line refering to seg_init can be deleted, or
                            commented.       ;
    179    000014          ;---------------------------------------------------
                           ------------;
    180    000014          
    181    000014 20....           JSR  seg_init                ; initialize
                                                                 data
                                                                 segments
    182    000017 A2..             LDX     #SFE(EXPR_STACK)     ; set up
                                                                 expression
                                                                 stack
                                                                 (again)
    183    000019                                               ; as seg_init
                            destroys it
    184    000019          skip_seg_init
    185    000019          
    186    000019          ;---------------------------------------------------
                           ------------;
    187    000019          ; Set up expression stack                           
                                       ;
    188    000019          ;---------------------------------------------------
                           ------------;
    189    000019          
    190    000019          expr_stack_start EQU  SFE(EXPR_STACK)
    191    000019          
    192    000019                  LIMIT  expr_stack_start,0,100h,"Expression
                                                            stack out of
                                                            range"
    193    000019          
    194    000019 A2..             LDX     #expr_stack_start & 255  ; load
                                                                     initial
                                                                     expr stack
                                                                     pointer
    195    00001B          
    196    00001B 20....           JSR  main      ; execute main()
    197    00001E          
    198    00001E          ;---------------------------------------------------
                           ------------;
    199    00001E          ; Now when we are ready with our C program we must
                            perform a    ;
    200    00001E          ; system-dependent action.  In this case we just
                            stop.          ;
    201    00001E          ;---------------------------------------------------
                           ------------;
    202    00001E          ; DO NOT CHANGE THE NEXT LINE OF CSTARTUP IF YOU
                            WANT TO RUN    ;
    203    00001E          ; YOUR SOFTWARE WITH THE HELP OF THE C-SPY HLL
                            DEBUGGER.        ;
    204    00001E          ;---------------------------------------------------
                           ------------;
    205    00001E          
    206    00001E 4C....           JMP  REFFN exit
    207    000021          
    208    000021          
    209    000021          ;---------------------------------------------------
                           ------------;
    210    000021          ; Copy initialized PROMmed code to shadow RAM and
                            clear         ;
    211    000021          ; uninitialized variables.                          
                                       ;
    212    000021          ;---------------------------------------------------
                           ------------;
    213    000021          
    214    000000                  EXTERN  ?DP0_L00, ?DP1_L00
    215    000021          seg_init
    216    000021          
    217    000021          ;---------------------------------------;
    218    000021          ; Initialize recursive stack RF_STACK   ;
    219    000021          ;---------------------------------------;
    220    000021 A9..             LDA #LOW(SFB(RF_STACK)+2)
    221    000023 8D....           STA np:SFB(RF_STACK)+0
    222    000026 A9..             LDA #HIGH(SFB(RF_STACK)+2)
    223    000028 8D....           STA np:SFB(RF_STACK)+1
    224    00002B          
    225    00002B          
    226    00002B          ;---------------------------------------;
    227    00002B          ; Zero out Z_UDATA                      ;
    228    00002B          ;---------------------------------------;
    229    00002B A0..             LDY     #SIZEOF(Z_UDATA)
    230    00002D F00A             BEQ     skip1
    231    00002F A2..             LDX     #SFB(Z_UDATA)
    232    000031 A900             LDA     #0
    233    000033 9500     loop1   STA     0,X
    234    000035 E8               INX
    235    000036 88               DEY
    236    000037 D0FA             BNE     loop1
    237    000039          skip1
    238    000039          
    239    000039          
    240    000039          ;---------------------------------------;
    241    000039          ; Copy Z_CDATA into Z_IDATA             ;
    242    000039          ;---------------------------------------;
    243    000039 A0..             LDY     #SIZEOF(Z_CDATA)
    244    00003B F009             BEQ  skip2
    245    00003D B9....   loop2:  LDA     NP:SFB(Z_CDATA)-1,Y
    246    000040 99....           STA     NP:SFB(Z_IDATA)-1,Y
    247    000043 88               DEY
    248    000044 D0F7             BNE  loop2
    249    000046          skip2
    250    000046          
    251    000046          ;---------------------------------------;
    252    000046          ; Zero out N_UDATA                      ;
    253    000046          ;---------------------------------------;
    254    000046 3C....           LDM     #LOW(SFB(N_UDATA)),?DP0_L00
    255    000049 3C....           LDM     #HIGH(SFB(N_UDATA)),?DP0_L00+1
    256    00004C A900             LDA     #0
    257    00004E A8               TAY
    258    00004F A2..             LDX     #HIGH(SIZEOF(N_UDATA))
    259    000051 F00A             BEQ     skip3
    260    000053 91..     loop3   STA     (?DP0_L00),Y
    261    000055 C8               INY
    262    000056 D0FB             BNE     loop3
    263    000058 E6..             INC     ZP:?DP0_L00+1
    264    00005A CA               DEX
    265    00005B D0F6             BNE     loop3
    266    00005D          skip3
    267    00005D A2..             LDX     #LOW(SIZEOF(N_UDATA))
    268    00005F F006             BEQ     skip4
    269    000061 91..     loop4   STA     (?DP0_L00),Y
    270    000063 C8               INY
    271    000064 CA               DEX
    272    000065 D0FA             BNE     loop4
    273    000067          skip4
    274    000067          
    275    000067          
    276    000067          ;---------------------------------------;
    277    000067          ; Copy CCSTR into ECSTR                 ;
    278    000067          ;---------------------------------------;
    279    000067 3C....           LDM     #LOW(SFB(CCSTR)),?DP0_L00
    280    00006A 3C....           LDM     #HIGH(SFB(CCSTR)),?DP0_L00+1
    281    00006D 3C....           LDM     #LOW(SFB(ECSTR)),?DP1_L00
    282    000070 3C....           LDM     #HIGH(SFB(ECSTR)),?DP1_L00+1
    283    000073 A2..             LDX     #HIGH(SIZEOF(CCSTR))
    284    000075 F003             BEQ     skip5
    285    000077 20....           JSR     large_copy_mem
    286    00007A          skip5
    287    00007A A2..             LDX     #LOW(SIZEOF(CCSTR))
    288    00007C F003             BEQ     skip6
    289    00007E 20....           JSR     small_copy_mem
    290    000081          skip6
    291    000081          
    292    000081          ;---------------------------------------;
    293    000081          ; Copy N_CDATA into N_IDATA             ;
    294    000081          ;---------------------------------------;
    295    000081 3C....           LDM     #LOW(SFB(N_CDATA)),?DP0_L00
    296    000084 3C....           LDM     #HIGH(SFB(N_CDATA)),?DP0_L00+1
    297    000087 3C....           LDM     #LOW(SFB(N_IDATA)),?DP1_L00
    298    00008A 3C....           LDM     #HIGH(SFB(N_IDATA)),?DP1_L00+1
    299    00008D A2..             LDX     #HIGH(SIZEOF(N_CDATA))
    300    00008F F003             BEQ     skip7
    301    000091 20....           JSR     large_copy_mem
    302    000094          skip7
    303    000094 A2..             LDX     #LOW(SIZEOF(N_CDATA))
    304    000096 F00A             BEQ     return
    305    000098          
    306    000098          ; fall into small_copy_mem to do final copy
    307    000098          
    308    000098          ;---------------------------------------;
    309    000098          ; Copy memory                           ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -