📄 psocconfig.lis
字号:
or F, FLAG_PGMODE_01b
ENDIF ; SYSTEM_LARGE_MEMORY_MODEL
ENDIF
ENDIF ; RAM_USE_CLASS_2
IF ( RAM_USE_CLASS_4 & RAM_USE_CLASS_3 )
IF ( SYSTEM_IDXPG_TRACKS_STK_PP )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
and F, ~FLAG_PGMODE_01b
ENDIF ; SYSTEM_LARGE_MEMORY_MODEL
ENDIF
ENDIF ; RAM_USE_CLASS_3
IF ( RAM_USE_CLASS_4 & RAM_USE_CLASS_4 )
; Nothing to do
ENDIF ; RAM_USE_CLASS_4
000A 10 push x
000B 70EF and F, ~FLAG_XIO_MASK
000D 5000 mov a, 0 ; Specify bank 0
000F 67 asr a ; Store in carry flag
0010 ; Load bank 0 table:
0010 5000 mov A, >LoadConfigTBL_cy4623_rdk_Bank0
0012 5700 mov X, <LoadConfigTBL_cy4623_rdk_Bank0
0014 7C0023 lcall LoadConfig ; Load the bank 0 values
0017
0017 5001 mov a, 1 ; Specify bank 1
0019 67 asr a ; Store in carry flag
001A ; Load bank 1 table:
001A 5000 mov A, >LoadConfigTBL_cy4623_rdk_Bank1
001C 5700 mov X, <LoadConfigTBL_cy4623_rdk_Bank1
001E 7C0023 lcall LoadConfig ; Load the bank 1 values
0021
0021 20 pop x
0022
IF ( RAM_USE_CLASS_4 & RAM_USE_CLASS_1 )
; Nothing to do
ENDIF ; RAM_USE_CLASS_1
IF ( RAM_USE_CLASS_4 & RAM_USE_CLASS_2 )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
IF ( SYSTEM_IDXPG_TRACKS_STK_PP )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
and F, ~FLAG_PGMODE_MASK ; NOTE: transition thru 00b state
or F, FLAG_PGMODE_MASK & FLAG_PGMODE_11b
ENDIF
ENDIF ; PGMODE LOCKED
IF ( SYSTEM_IDXPG_TRACKS_IDX_PP )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
and F, ~FLAG_PGMODE_MASK ; NOTE: transition thru 00b state
or F, FLAG_PGMODE_MASK & FLAG_PGMODE_10b
ENDIF
ENDIF ; PGMODE FREE
ENDIF ; SYSTEM_LARGE_MEMORY_MODEL
ENDIF ; RAM_USE_CLASS_2
IF ( RAM_USE_CLASS_4 & RAM_USE_CLASS_3 )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
IF ( SYSTEM_IDXPG_TRACKS_STK_PP )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
and F, ~FLAG_PGMODE_MASK ; NOTE: transition thru 00b state
or F, FLAG_PGMODE_MASK & FLAG_PGMODE_11b
ENDIF
ENDIF ; PGMODE LOCKED
IF ( SYSTEM_IDXPG_TRACKS_IDX_PP )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
and F, ~FLAG_PGMODE_MASK ; NOTE: transition thru 00b state
or F, FLAG_PGMODE_MASK & FLAG_PGMODE_10b
ENDIF
ENDIF ; PGMODE FREE
ENDIF ; SYSTEM_LARGE_MEMORY_MODEL
ENDIF ; RAM_USE_CLASS_3
IF ( RAM_USE_CLASS_4 & RAM_USE_CLASS_4 )
; Nothing to do
ENDIF ; RAM_USE_CLASS_4
0022 7F ret
0023
0023
0023
0023
0023 ;---------------------------------------------------------------------------
0023 ; LoadConfig - Set IO registers as specified in ROM table of (address,value)
0023 ; pairs. Terminate on address=0xFF.
0023 ;
0023 ; INPUTS: [A,X] points to the table to be loaded
0023 ; Flag Register Carry bit encodes the Register Bank
0023 ; (Carry=0 => Bank 0; Carry=1 => Bank 1)
0023 ;
0023 ; RETURNS: nothing.
0023 ;
0023 ; STACK FRAME: X-4 I/O Bank 0/1 indicator
0023 ; X-3 Temporary store for register address
0023 ; X-2 LSB of config table address
0023 ; X-1 MSB of config table address
0023 ;
0023 LoadConfig:
IF ( RAM_USE_CLASS_2 & RAM_USE_CLASS_1 )
; Nothing to do
ENDIF ; RAM_USE_CLASS_1
IF ( RAM_USE_CLASS_2 & RAM_USE_CLASS_2 )
IF ( SYSTEM_IDXPG_TRACKS_IDX_PP )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
or F, FLAG_PGMODE_01b
ENDIF ; SYSTEM_LARGE_MEMORY_MODEL
ENDIF
ENDIF ; RAM_USE_CLASS_2
IF ( RAM_USE_CLASS_2 & RAM_USE_CLASS_3 )
IF ( SYSTEM_IDXPG_TRACKS_STK_PP )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
and F, ~FLAG_PGMODE_01b
ENDIF ; SYSTEM_LARGE_MEMORY_MODEL
ENDIF
ENDIF ; RAM_USE_CLASS_3
IF ( RAM_USE_CLASS_2 & RAM_USE_CLASS_4 )
; Nothing to do
ENDIF ; RAM_USE_CLASS_4
0023 3802 add SP, 2 ; Set up local vars
0025 10 push X ; Save config table address on stack
0026 08 push A
0027 4F mov X, SP
0028 56FC00 mov [X-4], 0 ; Set default Destination to Bank 0
002B D004 jnc .BankSelectSaved ; Carry says Bank 0 is OK
002D 56FC01 mov [X-4], 1 ; No Carry: default to Bank 1
0030 .BankSelectSaved:
0030 18 pop A
0031 20 pop X
0032
0032 LoadConfigLp:
0032 70EF and F, ~FLAG_XIO_MASK
0034 62E300 mov reg[RES_WDT], 00h
0037 10 push X ; Preserve the config table address
0038 08 push A
0039 28 romx ; Load register address from table
003A 39FF cmp A, END_CONFIG_TABLE ; End of table?
003C A01F jz EndLoadConfig ; Yes, go wrap it up
003E 4F mov X, SP ;
003F 48FC01 tst [X-4], 1 ; Loading IO Bank 1?
0042 A003 jz .IOBankNowSet ; No, Bank 0 is fine
0044 7110 or F, FLAG_XIO_MASK
0046 .IOBankNowSet:
0046 54FD mov [X-3], A ; Stash the register address
0048 18 pop A ; Retrieve the table address
0049 20 pop X
004A 75 inc X ; Advance to the data byte
004B 0900 adc A, 0
004D 10 push X ; Save the config table address again
004E 08 push A
004F 28 romx ; load config data from the table
0050 4F mov X, SP ; retrieve the register address
0051 59FD mov X, [X-3]
0053 6100 mov reg[X], A ; Configure the register
0055 18 pop A ; retrieve the table address
0056 20 pop X
0057 75 inc X ; advance to next table entry
0058 0900 adc A, 0
005A 8FD7 jmp LoadConfigLp ; loop to configure another register
005C EndLoadConfig:
005C 38FC add SP, -4
IF ( RAM_USE_CLASS_2 & RAM_USE_CLASS_1 )
; Nothing to do
ENDIF ; RAM_USE_CLASS_1
IF ( RAM_USE_CLASS_2 & RAM_USE_CLASS_2 )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
IF ( SYSTEM_IDXPG_TRACKS_STK_PP )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
and F, ~FLAG_PGMODE_MASK ; NOTE: transition thru 00b state
or F, FLAG_PGMODE_MASK & FLAG_PGMODE_11b
ENDIF
ENDIF ; PGMODE LOCKED
IF ( SYSTEM_IDXPG_TRACKS_IDX_PP )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
and F, ~FLAG_PGMODE_MASK ; NOTE: transition thru 00b state
or F, FLAG_PGMODE_MASK & FLAG_PGMODE_10b
ENDIF
ENDIF ; PGMODE FREE
ENDIF ; SYSTEM_LARGE_MEMORY_MODEL
ENDIF ; RAM_USE_CLASS_2
IF ( RAM_USE_CLASS_2 & RAM_USE_CLASS_3 )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
IF ( SYSTEM_IDXPG_TRACKS_STK_PP )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
and F, ~FLAG_PGMODE_MASK ; NOTE: transition thru 00b state
or F, FLAG_PGMODE_MASK & FLAG_PGMODE_11b
ENDIF
ENDIF ; PGMODE LOCKED
IF ( SYSTEM_IDXPG_TRACKS_IDX_PP )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
and F, ~FLAG_PGMODE_MASK ; NOTE: transition thru 00b state
or F, FLAG_PGMODE_MASK & FLAG_PGMODE_10b
ENDIF
ENDIF ; PGMODE FREE
ENDIF ; SYSTEM_LARGE_MEMORY_MODEL
ENDIF ; RAM_USE_CLASS_3
IF ( RAM_USE_CLASS_2 & RAM_USE_CLASS_4 )
; Nothing to do
ENDIF ; RAM_USE_CLASS_4
005E 7F ret
005F
AREA InterruptRAM(ram, rel)
0000 NO_SHADOW:
0000 _NO_SHADOW:
0000 ; write only register shadows
0000 _Port_1_Data_SHADE:
0000 Port_1_Data_SHADE: BLK 1
0001
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -