📄 wini.asm
字号:
.mmregs
.def init_54
;ST0 register organization
* -----------------------------------------------------------------
* |15 13| 12 | 11 | 10 | 9 | 8 0|
* -----------------------------------------------------------------
* | ARP | TC | C | OVA | OVB | DP |
* -----------------------------------------------------------------
K_ARP .set 000b<<13 ; ARP can be addressed for 000b
; --- 111b reset value
K_TC .set 1b<<12 ; TC = 1 at reset
K_C .set 1b<<11 ; C = 1 at reset
K_OVA .set 1b<<10 ; OVA = 0 at reset , set OVA
K_OVB .set 1b<<9 ; OVB = 0 at reset , SET OVB
K_DP .set 00000000b<<0 ; DP is cleared to 0 at reset
K_ST0 .set K_ARP|K_TC|K_C|K_OVA|K_OVB|K_DP
**********************************************************************
;ST1 register organization
* ----------------------------------------------------------------
* | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 0 |
* ----------------------------------------------------------------
* | BRAF | CPL | XF | HM | INTM | 0 |OVM|SXM|C16|FRCT|CMPT| ASM |
* ----------------------------------------------------------------
K_BRAF .set 0b<<15 ; BRAR = 0 at reset
K_CPL .set 0b<<14 ; CPL = 0 at reset
K_XF .set 1b<<13 ; XF = 1 at reset
K_HM .set 0b<<12 ; HM = 0 at reset
K_INTM .set 1b<<11 ; INTM
K_ST1_RESR .set 0b<<10
K_OVM .set 1b<<9 ; OVM = 0 at reset
K_SXM .set 1b<<8 ; SXM =1 at reset
K_C16 .set 0b<<7 ; C16 = 0 at reset
K_FRCT .set 1b<<6 ; FRCT = 0 at reset
K_CMPT .set 0b<<5 ; CMPT = 0 at reset
K_ASM .set 00000b<<0 ; ASM = 0 at reset
K_ST1_HI .set K_BRAF|K_CPL|K_XF|K_HM|K_INTM|K_ST1_RESR
K_ST1_LO .set K_OVM|K_C16|K_FRCT|K_CMPT|K_ASM
K_ST1 .SET K_ST1_HI|K_ST1_LO
*********************************************************************
;PMST register organization
* -------------------------------------------------------------
* | 15 7 | 6 | 5 | 4 | 3 | 2 | 1 0 |
* -------------------------------------------------------------
* | IPTR | MP/MC- | OVLY | AVIS | DROM | CLKOFF | RESEVED |
* -------------------------------------------------------------
K_IPTR .SET 000000001b << 07 ; 111111111b at reset
K_MP_MC .SET 1b << 6 ; 1 at reset
K_OVLY .SET 1b << 5 ; 0 at reset,
K_AVIS .SET 0b << 4 ; 0 at reset
K_DROM .SET 1b << 3 ; 0 at reset ;the code length is larger than 32k
K_CLKOFF .SET 0b << 2 ; 0 at reset
K_PMST_RESR .SET 00b ; 00b at reset
K_PMST .SET K_IPTR|K_OVLY|K_DROM|K_CLKOFF|K_PMST_RESR
*SWWSR register organization
* --------------------------------------------------------------
* | 15 | 14 12| 11 9| 8 6 | 5 3| 2 0|
* --------------------------------------------------------------
* | reserved | I/O | DATA | DATA | PROGRAM | PROGRAM |
* --------------------------------------------------------------
K_SWWSR_RESV .SET 1b << 15 ; reset
K_IO .SET 111b << 12 ; reset
K_DATA1 .SET 111b << 9 ; reset
K_DATA2 .SET 111b << 6 ; reset
K_PROGRAM1 .SET 111b << 3 ; reset
K_PROGRAM2 .SET 111b ; reset
K_SWWSR .SET K_SWWSR_RESV|K_IO|K_DATA1|K_DATA2|K_PROGRAM1|K_PROGRAM2
*Bank Switch Control Register(BSCR) organization
* ----------------------------------------
* | 15 12| 11 | 10 2 | 1 | 0 |
* ----------------------------------------
* | BNKCMP | PS-DS | Reserved | BH | EXIO|
* ----------------------------------------
K_BNKCMP .SET 1111b << 12 ; bank size = 4k
K_PSDS .SET 1b << 11 ; reset
K_BSCR_RESV .SET 000000000b << 2
K_BH .SET 0b << 1 ; reset
K_EXIO .SET 0b ; reset
K_BSCR .SET K_BNKCMP|K_PSDS|K_BSCR_RESV|K_BH|K_EXIO
;--------------------------------------------------------------
; Functional Description
; Initializes the processor from a reset state
;--------------------------------------------------------------
.sect "mainprg"
init_54:
STM #K_SWWSR ,SWWSR
STM #K_BSCR ,BSCR
STM #K_ST0 ,ST0
STM #K_ST1 ,ST1
LDM PMST,A
OR #60h,A
AND #0xfff7,A
STLM A,PMST
nop
STLM A,PMST
STM 0h,CLKMD
cmode: LDM CLKMD,A
AND #1h,0,A,A
BC cmode,ANEQ
STM 0004h,CLKMD ;CLKMD=9207h
nop
nop
RET
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -