;========================================================================+ ; BTL0 | ;========================================================================+ ; --- the 32 bytes start here 0xE6 0xF0 0x60 0xFA ; mov R0, #0fa60h ; W0: 0x9A 0xB7 0xFE 0x70 ; jnb S0RIR, W0 0xA4 0x00 0xB2 0xFE ; movb [R0], S0RBUF 0x7E 0xB7 ; bclr S0RIR 0x86 0xF0 0xD3 0xFA ; cmpi1 R0, #0FAD3h ; read 116 bytes (0x74) 0x3D 0xF8 ; jmpr cc_NE, W0 0xE6 0xF0 0x21 0x00 ; mov R0, #'!' 0xF6 0xF0 0xB0 0xFE ; mov S0TBUF, R0 0xCC 0x00 ; nop 0xCC 0x00 ; nop ;========================================================================+ ; BTL1 | ;========================================================================+ ; (0xFA60) ; --- initialize bus configuration ------------------------------------------ 0xE6 0x89 0x80 0xF4 ; mov SYSCON, #F480h 0xCC 0x00 ; nop 0xE6 0x89 0x80 0xF4 ; mov SYSCON, #F480h 0xCC 0x00 ; nop ; --- initialize CPS -------------------------------------------------------- ; jmps far next ; far intersegment jump to update CPS 0xFA 0x00 0x70 0xFA ;next: ; (0xFA70) ; --- initialize DPPx ------------------------------------------------------- 0xE6 0x00 0x00 0x00 ; mov DPP0, #0 0xE6 0x01 0x01 0x00 ; mov DPP1, #1 0xE6 0x02 0x02 0x00 ; mov DPP2, #2 0xE6 0x03 0x03 0x00 ; mov DPP3, #3 ; (0xFA80) ; --- initialize ADDRSEL1 --------------------------------------------------- 0xE6 0x0C 0x08 0x10 ; mov ADDRSEL1, #1008h ; --- set up WR# as an output ----------------------------------------------- 0xDF 0xE2 ; bset P3.13 ; set WR# 0xDF 0xE3 ; bset DP3.13 ; make WR# an output ; --- set up serial port ---------------------------------------------------- 0xAF 0xE3 ; bset DP3.10 0xE6 0xD8 0x11 0x80 ; mov S0CON, #8011h 0xE6 0x5A 0x3F 0x00 ; mov S0BG, #3Fh 0xE6 0xB6 0x00 0x00 ; mov S0TIC, #0 0xE6 0xB7 0x00 0x00 ; mov S0RIC, #0 0xE6 0xB8 0x00 0x00 ; mov S0EIC, #0 ; --- serial port initialized for 40MHz oscillator frequency --- ; (0xFA9E) ; --- system initialization done -------------------------------------------- 0xa5 0x5a 0xa5 0xa5 ; DISWDT 0xB5 0x4A 0xB5 0xB5 ; EINIT ; the LED goes on after this instruction ; (0xFAA6) ; W1: 0x9A 0xB6 0xFE 0x70 ; jnb S0TIR, W1 0xE6 0xF0 0x23 0x00 ; mov R0, #'#' 0xF6 0xF0 0xB0 0xFE ; mov S0TBUF, R0 ; W2: 0x9A 0xB6 0xFE 0x70 ; jnb S0TIR, W2 0x7E 0xB6 ; bclr S0TIR ; (0xFAB8) ; --------------------------------------------------------------------------- ; --- load code starting from 0 --- 0xE6 0xF0 0x00 0x00 ; mov R0, #0 ; ; W0: 0x9A 0xB7 0xFE 0x70 ; jnb S0RIR, W0 0xA4 0x00 0xB2 0xFE ; movb [R0], S0RBUF 0x7E 0xB7 ; bclr S0RIR ;0xB4 0x00 0xB0 0xFE ; movb S0TBUF, [R0] 0xCC 0x00 ; nop 0xCC 0x00 ; nop ; --- the count here must match the size of minmon --- 0x86 0xF0 0x4F 0x01 ; cmpi1 R0, #014Fh ; read 336 bytes (0x0150) 0x3D 0xF6 ; jmpr cc_NE, W0 0xB7 0x48 0xB7 0xB7 ; SRST ; (0xFAD4)