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

📄 l55b4.asm

📁 Delphi Source for work with Siemens Mobile phones
💻 ASM
📖 第 1 页 / 共 2 页
字号:
; =========================================================================
;      MAIN BOOT.  PV` PapuaSoft & PapuaHard 2005
; =========================================================================
; ---------------------------------------------------------------------------

$SET (WriteBuffered=1)

$SET (AX75=1)
$SET (A75=0)
$SET (A70=0)
$SET (A65=0)
$SET (A60=0)
$SET (S55=0)
$SET (M55=0)
$SET (C55=0)
$SET (A55=0) ;=C55!!!
$SET (A50=0)

$SET (ENABLE_INT3=0)

$Mod167
$IF NOT TINY
$SEGMENTED
$ENDIF

$INCLUDE (reg167n.a66)

word_3F00 EQU 03F00H
word_3F02 EQU 03F02H
word_3F04 EQU 03F04H
word_3F08 EQU 03F08H
word_3F0A EQU 03F0AH
word_3F0C EQU 03F0CH
word_3F0E EQU 03F0EH
word_3F10 EQU 03F10H

T3INT  EQU 08CH
;word_8000 EQU 0
;word_8004 EQU 4

$IF AX75
;AX75 FlashID: 0001/227E-2221-2201
;Size: 16Mb, WriteBuffer: 32 bytes
;Region(1): Blocks 128, Size 128Kb
;RAM Size: 256Kb
DEFFlashSize  EQU 1000H     ; 16Mb
DEFCFISegs  EQU 01H
DEFCFISegN1 EQU 007FH   ; CFISegN1+1
DEFCFISegS1 EQU 0200H   ; CFISegS1*256 128Kb
$ENDIF

$IF A75
DEFFlashSize  EQU 0800H     ; 8Mb
DEFCFISegs  EQU 01H
DEFCFISegN1 EQU 003FH   ; CFISegN1+1
DEFCFISegS1 EQU 0200H   ; CFISegS1*256 128Kb
$ENDIF

$IF A70
;A70  FlashID: 0001/227E-220C-2201
;Size: 8Mb, WriteBuffer: 32 bytes
;Region(1): Blocks 128, Size 64Kb
DEFFlashSize  EQU 0800H  ; 8Mb
DEFCFISegs  EQU 01H
DEFCFISegN1 EQU 007FH  ; CFISegN1+1
DEFCFISegS1 EQU 0100H  ; CFISegS1*256 64Kb
$ENDIF

$IF A60
;SIEMENS A62 lg98 Sw02
;FlashID: 0001/227E-220C-2201
;Flash Size: 8Mb, WriteBuffer: 32 bytes
;Region(1): Blocks 128, Size 64Kb
;RAM Size: 512Kb
;Start EEPROM segments at addres 0xFC0000
;SIEMENS A60 lg91 Sw23
;FlashID: 0001/227E-220C-2201
;Flash Size: 8Mb, WriteBuffer: 32 bytes
;Region(1): Blocks 128, Size 64Kb
;RAM Size: 512Kb
DEFFlashSize  EQU 0800H   ; 8Mb
DEFCFISegs  EQU 01H
DEFCFISegN1 EQU 003FH   ; CFISegN1+1
DEFCFISegS1 EQU 0100H   ; CFISegS1*256 64Kb
$ENDIF

$IF A65
;SIEMENS A65 lg91 Sw15
;FlashID: 0001/227E-2212-2200
;Flash Size: 16Mb, WriteBuffer: 32 bytes
;Region(1): Blocks 256, Size 64Kb
;RAM Size: 512Kb
;Start EEPROM segments at addres 0x7C0000
DEFFlashSize  EQU 1000H   ; 16Mb
DEFCFISegs  EQU 01H
DEFCFISegN1 EQU 007FH   ; CFISegN1+1
DEFCFISegS1 EQU 0100H   ; CFISegS1*256 256Kb
$ENDIF

$IF C60
;SIEMENS C60 lg95
;FlashID: 0001/227E-2212-2200
;Size: 16Mb, WriteBuffer: 32 bytes
;Region(1): Blocks 256, Size 64Kb
DEFFlashSize  EQU 1000H   ; 16Mb
DEFCFISegs  EQU 01H
DEFCFISegN1 EQU 00FFH   ; CFISegN1+1
DEFCFISegS1 EQU 0100H   ; CFISegS1*256 64Kb
$ENDIF

$IF S55
;S55  FlashID: 0020/8810 (0020/88BA)
;Size: 12Mb, WriteBuffer: 8 bytes
;Region(1): Blocks 63, Size 64Kb
;Region(2): Blocks 8, Size 8Kb
;Region(3): Blocks 127, Size 64Kb
;Region(4): Blocks 8, Size 8Kb
;RAM Size: 1024Kb
;---
;SL55 FlashID: 0089/8854 (0089/0016)
;Flash Size: 12Mb, WriteBuffer: 32 bytes
;Region(1): Blocks 32, Size 128Kb
;Region(2): Blocks 127, Size 64Kb
;Region(3): Blocks 8, Size 8Kb
DEFFlashSize  EQU 0C00H     ; 12Mb
DEFCFISegs  EQU 04H
DEFCFISegN1 EQU 003EH   ; CFISegN1+1 63
DEFCFISegS1 EQU 0100H   ; CFISegS1*256 64Kb
DEFCFISegN2 EQU 0007H   ; CFISegN2+1 8
DEFCFISegS2 EQU 0020H   ; CFISegS2*256 8Kb
DEFCFISegN3 EQU 007EH   ; CFISegN3+1 127
DEFCFISegS3 EQU 0100H   ; CFISegS3*256 64Kb
DEFCFISegN4 EQU 0007H   ; CFISegN4+1 8
DEFCFISegS4 EQU 0020H   ; CFISegS4*256 8Kb
$ENDIF

$IF M55
;SIEMENS M55 lg2 Sw10
;FlashID: 0001/227E-2212-2200
;Flash Size: 16Mb, WriteBuffer: 32 bytes
;Region(1): Blocks 256, Size 64Kb
;RAM Size: 512Kb
;Start EEPROM segments at addres 0xFC0000
DEFFlashSize  EQU 01000H     ; 16Mb
DEFCFISegs  EQU 01H
DEFCFISegN1 EQU 007FH   ; CFISegN1+1
DEFCFISegS1 EQU 0100H   ; CFISegS1*256 128Kb
$ENDIF

$IF C55
;C55 lg91
;FlashID: 0089/0017
;Size: 8Mb, WriteBuffer: 32 bytes
;Region(1): Blocks 64, Size 128Kb
DEFFlashSize  EQU 0800H     ; 8Mb
DEFCFISegs  EQU 01H
DEFCFISegN1 EQU 003FH   ; CFISegN1+1
DEFCFISegS1 EQU 0200H   ; CFISegS1*256 128Kb
$ENDIF

$IF A55
;A55 FlashID: 0089/0017
;Size: 8Mb, WriteBuffer: 32 bytes
;Region(1): Blocks 64, Size 128Kb
;RAM Size: 512Kb
DEFFlashSize  EQU 0800H     ; 8Mb
DEFCFISegs  EQU 01H
DEFCFISegN1 EQU 003FH   ; CFISegN1+1
DEFCFISegS1 EQU 0200H   ; CFISegS1*256 128Kb
$ENDIF

$IF A50
;SIEMENS A50
;FlashID: 0020/88BA
;Flash Size: 4Mb, WriteBuffer: 32 bytes
;Start EEPROM segments at addres 0xBF0000
DEFFlashSize  EQU 0400H     ; 4Mb
DEFCFISegs  EQU 01H
DEFCFISegN1 EQU 001FH   ; CFISegN1+1
DEFCFISegS1 EQU 0200H   ; CFISegS1*256 128Kb
$ENDIF


Boot4          Section Code    Word  At  200h

a7xboot4     Proc    near

                mov     DPP0, #0  ; assume dpp0: 0 (page 0x0)
                mov     DPP3, #3  ; assume dpp1: 3 (page 0xC000)
;                bclr    ROMEN
;                               diswdt
;                mov     DPP0, #0  ; assume dpp0: 0 (page 0x0)
;                               mov             CP, #0FC00h
;                mov     DPP0, #0  ; assume dpp0: 0 (page 0x0)
;                mov     DPP1, #3  ; assume dpp1: 3 (page 0xC000)
;                mov     DPP2, #80h ; assume dpp2: 80h (page 0x200000)
;                einit
$IF ENABLE_INT3
                mov     r1, #T3INT
                mov     r2, #0FAh
                mov     r3, #Int_T3
                mov     [r1+#0], r2
                mov     [r1+#2], r3
                bset    IEN
$ENDIF
$IF M55
                mov     P8, #0FFFFh
                mov     DP8, #0FFFFh
$ENDIF
$IF A70 or A75 or AX75
                mov     word_FF38, #10h
$IF A75 or AX75
                mov     CCM4, #20h
$ENDIF
$IF A70
                mov     CCM4, #14h
$ENDIF
$ENDIF
                call    Read_FlashID_FSN
                mov     r4, #5650h ;'PV'
                call    Send_r4
                mov     r3, FlashSize
                mov     DPP1, #0E8h  ;0E8h<<14=0x3A0000
                jb      r3.12, loc_a16m
                mov     DPP1, #2E8h  ;2E8h<<14=0xBA0000
loc_a16m:
                call    FindEELITE_
SendOkAndNextCmd:
                mov     r4, #4B4Fh ;'OK'
SendR4AndNextCmd:
                call    Send_r4
Next_cmd:
                call    Rx_rl3
                cmp     rl3, #52h ; 'R' ReadData
                jmp     cc_Z, Cmd_R
                cmp     rl3, #46h ; 'F' FlashWriteSeg
                jmp     cc_Z, Cmd_F
                cmp     rl3, #49h ; 'I' FlashInfo
                jmp     cc_Z, Cmd_I
                cmp     rl3, #54h ; 'T' Terminate
                jmp     cc_Z, Cmd_T
                cmp     rl3, #4Ah ; 'J' Joke
                jmp     cc_Z, Cmd_J
                cmp     rl3, #42h ; 'B' Baud
                jmp     cc_Z, Cmd_B
                cmp     rl3, #58h ; 'X' Test
                jmp     cc_Z, Cmd_X
                cmp     rl3, #47h ; 'G' Go
                jmp     cc_Z, Cmd_G
                mov     r4, #4355h ;#aUnknownCommand
                cmp     rl3, #41h ; 'A'
                jmp     cc_NZ, SendR4AndNextCmd
                mov     rl3, #52h ;'R'
SendRl3AndNextCmd:
                call    Tx_rl3
                jmp     Next_cmd
; --------------- S U B R O U T I N E ---------------------------------------
Cmd_G:
                call    Rx_r6r7
                calls   0,#GoSub
                jmp     SendR4AndNextCmd
GoSub:
                push    r6
                push    r7
                rets
; --------------- S U B R O U T I N E ---------------------------------------
Cmd_T:
                mov     r4, #4B4Fh ;'OK'
                call    Send_r4
                srst
Tx_rl2:
                mov     rl3, rl2
                jmp     Tx_rl3
; --------------- S U B R O U T I N E ---------------------------------------
Cmd_B:
                call    Rx_r1_r7
                extr    #2
$IF AX75 or A75 or A70
                mov     PP0, r1
                mov     PP1, r7
$ELSE
                mov     S0BG, r1
                mov     word_FEB6, r7
$ENDIF
                call    Rx_rl3
                call    Tx_rl3
                jmp     SendOkAndNextCmd
; --------------- S U B R O U T I N E ---------------------------------------
EntryNotFound:
                mov     r4, #4645h  ; "Entry not Found"
                jmp     SendR4AndNextCmd
; --------------- S U B R O U T I N E ---------------------------------------
Rx_r1_r7:
                call    Rx_rl3
                mov     r1, r3
                call    Rx_rl3
                mov     rh1, rl3
                call    Rx_rl3
                mov     r7, r3
                call    Rx_rl3
                mov     rh7, rl3
                ret

⌨️ 快捷键说明

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