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

📄 dicchess.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 4 页
字号:
	BCS	  ?5			;;jmp if Enemy_Number>6
	SMB2	  <Enemy_Space_Num	;;ORA #00000100B TO Enemy_Space_Num
?5:	ASL				;;Asl Enemy_Number 4 times
	ASL
	ASL
	ASL
	ORA	  <Enemy_Space_Num	;;Ora Enemy_Number to Enemy_Space_Num
	STA	  <Cpu_Space_Num	;;    store to Cpu_Space_Num
	JSR	  GetMatchValue 	;;call GetMatchValue
	CLC
	LDA	  <Cpu_Number		;;Add Cup_Number to CmpValueEnemy
	ADC	  <CmpValueEnemy
	BCC	  ?6			;;if carry then set to 255
	LDA	  #255
?6:	STA	  <CmpValueEnemy
?7:	RTS
GetMatchValue:
	LDX	  #0
?1:	LDA	  MatchValue,X
	INX
	CMP	  <Cpu_Space_Num
	BEQ	  ?2
	INX
	CPX	  #88
	BNE	  ?1
	LDA	  #3
	BRA	  ?21
?2:	LDA	  MatchValue,X
?21:	STA	  <Cpu_Number
	RTS

;;---------------------------------------
;;	 Get Best Position
;;---------------------------------------
GetBestPosition:
	LDA	  <Level
	CMP	  #0
	BNE	  ?0
	JMP	  CompareBest
?0:	LDA	  <CmpValueCpu
	CMP	  #255
	BNE	  ?2
?1:	STA	  <BestValue
	LDA	  <Cursor_X
	STA	  <BestPositionX
	LDA	  <Cursor_Y
	STA	  <BestPositionY
	RMB7	  <Locate_Value
	RTS
?2:	LDA	  <BestValue
	CMP	  #255
	BNE	  ?3
	RTS
?3:	LDA	  <CmpValueEnemy
	CMP	  #255
	BNE	  ?4
	STA	  <BestValue
	LDA	  <Cursor_X
	STA	  <BestPositionX
	LDA	  <Cursor_Y
	STA	  <BestPositionY
	SMB7	  <Locate_Value
	RTS
?4:	LDA	  <Level
	CMP	  #1
	BNE	  ?40
	JMP	  CompareBest
?40:	LDA	  <CmpValueCpu
	CMP	  #54
	BCC	  ?6
	BBS7	  <Locate_Value,?41
	CMP	  <BestValue
	BCC	  ?5
?41:	STA	  <BestValue
	LDA	  <Cursor_X
	STA	  <BestPositionX
	LDA	  <Cursor_Y
	STA	  <BestPositionY
	RMB7	  <Locate_Value
?5:	RTS
?6:	LDA	  <BestValue
	CMP	  #54
	BCC	  ?61
	BBR7	  <Locate_Value,?5
?61:	LDA	  <CmpValueEnemy
	CMP	  #54
	BCC	  ?8
	CMP	  <BestValue
	BCC	  ?7
	STA	  <BestValue
	LDA	  <Cursor_X
	STA	  <BestPositionX
	LDA	  <Cursor_Y
	STA	  <BestPositionY
	SMB7	  <Locate_Value
?7:	RTS
?8:
	LDA	  <BestValue
	CMP	  #54
	BCS	  ?7
	LDA	  <Level
	CMP	  #2
	BNE	  ?80
	JMP	  CompareBest
?80:	LDA	  <CmpValueCpu
	CMP	  #42
	BCC	  ?9
	BBS7	  <Locate_Value,?81
	CMP	  <BestValue
	BCC	  ?82
?81:
	STA	  <BestValue
	LDA	  <Cursor_X
	STA	  <BestPositionX
	LDA	  <Cursor_Y
	STA	  <BestPositionY
	RMB7	  <Locate_Value
?82:	RTS
?9:
	LDA	  <BestValue
	CMP	  #42
	BCC	  Compare
	BBR7	  <Locate_Value,?82
Compare:LDA	  <CmpValueEnemy
	CMP	  #42
	BCC	  ?2
	CMP	  <BestValue
	BCC	  ?1
	STA	  <BestValue
	LDA	  <Cursor_X
	STA	  <BestPositionX
	LDA	  <Cursor_Y
	STA	  <BestPositionY
	SMB7	  <Locate_Value
?1:	RTS
?2:
	LDA	  <BestValue
	CMP	  #42
	BCS	  ?1
	LDA	  <Level
	CMP	  #3
	BEQ	  CompareBest
	LDA	  <CmpValueCpu
	CMP	  #21
	BCC	  ?5
	LDA	  <BestValue
	CMP	  #21
	BCS	  ?21
	LDA	  <CmpValueCpu
	STA	  <BestValue
	LDA	  <CmpValueEnemy
	BRA	  ?3
?21:
	LDA	  <CmpValueEnemy
	BBS7	  <Locate_Value,?3
	CMP	  <BestValue2
	BCC	  ?4
?3:
	STA	  <BestValue2
	LDA	  <Cursor_X
	STA	  <BestPositionX
	LDA	  <Cursor_Y
	STA	  <BestPositionY
	RMB7	  <Locate_Value
?4:	RTS
?5:	LDA	  <BestValue
	CMP	  #21
	BCC	  ?6
	BBR7	  <Locate_Value,?4
?6:	LDA	  <CmpValueEnemy
	CMP	  #21
	BCC	  compare2
	LDA	  <BestValue
	CMP	  #21
	BCS	  ?61
	LDA	  <CmpValueEnemy
	STA	  <BestValue
	LDA	  <CmpValueCpu
	BRA	  ?62

?61:	LDA	  <CmpValueCpu
	CMP	  <BestValue2
	BCC	  ?7
?62:	STA	  <BestValue2
	LDA	  <Cursor_X
	STA	  <BestPositionX
	LDA	  <Cursor_Y
	STA	  <BestPositionY
	SMB7	  <Locate_Value
?7:
CMPRET: lda	  <BestValue
	bne	  ?cmr1
	lda	  #1
	sta	  <BestValue
	lda	  <Cursor_X
	sta	  <BestPositionX
	lda	  <Cursor_Y
	sta	  <BestPositionY
	smb7	  <Locate_Value
?cmr1:
	RTS
compare2:
compare1:
	LDA	  <BestValue
	CMP	  #21
	BCS	  CMPRET
CompareBest:
	LDA	  <CmpValueCpu
	CMP	  <BestValue
	BCC	  ?1
	BEQ	  ?3
?5:	STA	  <BestValue
	LDA	  <CmpValueEnemy
	STA	  <BestValue2
	RMB7	  <Locate_Value
	LDA	  <Cursor_X
	STA	  <BestPositionX
	LDA	  <Cursor_Y
	STA	  <BestPositionY
	BRA	  ?1
?3:	LDA	  <CmpValueEnemy
	CMP	  <BestValue2
	BCC	  ?1
	LDA	  <CmpValueCpu
	BRA	  ?5
?1:
	LDA	  <BestValue
	CMP	  <CmpValueEnemy
	BCS	  ?2
?6:	BBS7	  <Locate_Value,?60
	LDA	  <CmpValueCpu
	CMP	  #54
	BCS	  ?4
?60:	LDA	  <CmpValueEnemy
	STA	  <BestValue
	LDA	  <CmpValueCpu
	STA	  <BestValue2
?61:	SMB7	  <Locate_Value
	LDA	  <Cursor_X
	STA	  <BestPositionX
	LDA	  <Cursor_Y
	STA	  <BestPositionY
?4:	RTS
?2:	BNE	  ?4
	BBR7	  <Locate_Value,?4
	LDA	  <CmpValueCpu
	CMP	  <BestValue2
	BCC	  ?4
	BRA	  ?6
;;[S]----------------------------------[S]
;;	 Show 5 Point Chess
;;		 WIN
;;[S}----------------------------------[S]
Show5Finish:
	LDA	  <BestPositionX
	STA	  <Locate_X
	LDA	  <BestPositionY
	STA	  <Locate_Y
	JSR	  Get_Locate_Value
	LDA	  <Locate_Value
	AND	  #00000011B
	STA	  <Judge_Flag
	SMB1	  <Locate_Value
	JSR	  PrintLocate
	BBR0	  <WinFlag,?3		;;jmp if not horizonal
;;----------------------------------------------------------
?0:	DEC	  <Locate_X
	BMI	  ?1
	JSR	  Get_Locate_Value
	BBS1	  <Locate_Value,?1
	LDA	  <Locate_Value
	AND	  #00000011B
	CMP	  <Judge_Flag
	BNE	  ?1
	JSR	  PrintLocate
	BRA	  ?0
?1:	LDA	  <BestPositionX
	STA	  <Locate_X
?2:	INC	  <Locate_X
	BBS4	  <Locate_X,?3
	JSR	  Get_Locate_Value
	BBS1	  <Locate_Value,?3
	LDA	  <Locate_Value
	AND	  #00000011B
	CMP	  <Judge_Flag
	BNE	  ?3
	JSR	  PrintLocate
	BRA	  ?2
;;-----------------------------------------------------
?3:	BBR1	  <WinFlag,?7
	LDA	  <BestPositionX
	STA	  <Locate_X
	LDA	  <BestPositionY
	STA	  <Locate_Y
?4:	DEC	  <Locate_Y
	BMI	  ?5
	JSR	  Get_Locate_Value
	BBS1	  <Locate_Value,?5
	LDA	  <Locate_Value
	AND	  #00000011B
	CMP	  <Judge_Flag
	BNE	  ?5
	SMB1	  <Locate_Value
	JSR	  PrintLocate
	BRA	  ?4
?5:	LDA	  <BestPositionY
	STA	  <Locate_Y
?6:	INC	  <Locate_Y
	BBS4	  <Locate_Y,?7
	JSR	  Get_Locate_Value
	BBS1	  <Locate_Value,?7
	LDA	  <Locate_Value
	AND	  #00000011B
	CMP	  <Judge_Flag
	BNE	  ?7
	SMB1	  <Locate_Value
	JSR	  PrintLocate
	BRA	  ?6
;;------------------------------------------
?7:	BBR2	  <WinFlag,?11
	LDA	  <BestPositionX
	STA	  <Locate_X
	LDA	  <BestPositionY
	STA	  <Locate_Y
?8:	DEC	  <Locate_X
	BMI	  ?9
	DEC	  <Locate_Y
	BMI	  ?9
	JSR	  Get_Locate_Value
	BBS1	  <Locate_Value,?9
	LDA	  <Locate_Value
	AND	  #00000011B
	CMP	  <Judge_Flag
	BNE	  ?9
	SMB1	  <Locate_Value
	JSR	  PrintLocate
	BRA	  ?8
?9:	LDA	  <BestPositionY
	STA	  <Locate_Y
	LDA	  <BestPositionX
	STA	  <Locate_X
?10:	INC	  <Locate_Y
	BBS4	  <Locate_Y,?11
	INC	  <Locate_X
	BBS4	  <Locate_X,?11
	JSR	  Get_Locate_Value
	BBS1	  <Locate_Value,?11
	LDA	  <Locate_Value
	AND	  #00000011B
	CMP	  <Judge_Flag
	BNE	  ?11
	SMB1	  <Locate_Value
	JSR	  PrintLocate
	BRA	  ?10
;;----------------------------------------------------
?11:	BBR3	  <WinFlag,?15
	LDA	  <BestPositionX
	STA	  <Locate_X
	LDA	  <BestPositionY
	STA	  <Locate_Y
?12:	DEC	  <Locate_X
	BMI	  ?13
	INC	  <Locate_Y
	BBS4	  <Locate_Y,?13
	JSR	  Get_Locate_Value
	BBS1	  <Locate_Value,?13
	LDA	  <Locate_Value
	AND	  #00000011B
	CMP	  <Judge_Flag
	BNE	  ?13
	SMB1	  <Locate_Value
	JSR	  PrintLocate
	BRA	  ?12
?13:	LDA	  <BestPositionY
	STA	  <Locate_Y
	LDA	  <BestPositionX
	STA	  <Locate_X
?14:	DEC	  <Locate_Y
	BMI	  ?15
	INC	  <Locate_X
	BBS4	  <Locate_X,?15
	JSR	  Get_Locate_Value
	BBS1	  <Locate_Value,?15
	LDA	  <Locate_Value
	AND	  #00000011B
	CMP	  <Judge_Flag
	BNE	  ?15
	SMB1	  <Locate_Value
	JSR	  PrintLocate
	BRA	  ?14
?15:	RTS
PrintLocate:
	lda	<Locate_X
	ina
	sec
	sbc	<DispCenterX
	bcc	?noshow
	pha
	cmp	#9
	beq	?1
	bcs	?noshow1
?5:	lda	<Locate_Y
	ina
	sec
	sbc	<DispCenterY
	bcc	?noshow1
	cmp	#7
	beq	?2
	bcs	?noshow1
?7:	tax
	lda	dlocate,x
	sta	<oy
	plx
	lda	dlocate,x
	sta	<ox
	bbr0	<FlashFlag,?3
	loprintimage	  Cross
	rts
?3:	bbs0	<Judge_Flag,?4
	loprintimage	  MeChess
	rts
?4:	loprintimage	  CpuChess
	rts
?1:	lda	<DispCenterX
	cmp	#8
	beq	?noshow1
	bra	?5
?2:	pha
	lda	<DispCenterY
	cmp	#10
	beq	?6
	pla
	bra	?7
?6:	pla

?noshow1:
	pla
?noshow:rts
ShowUp:
	stz	<ox
	stz	<oy
	loprintimage	  UpBorder
	rts
ShowDown:
	stz	<ox
	;;lda	  #58 ;;#42
	;;lda	  #56 ;;#42
	lda	#72	;;zjw
	sta	<oy
	loprintimage	  DownBorder
	rts
ShowLeft:
	stz	<ox
	stz	<oy
	loprintimage	  fiLeftBorder
	rts
ShowRight:
	;;lda	  #74
	lda	#72
	sta	<ox
	stz	<oy
	loprintimage	  fiRightBorder
	rts
ShowUpLeft:
	stz	<ox
	stz	<oy
	loprintimage	  UpLeft
	rts
ShowDownLeft:
	stz	<ox
	;;lda	  #58
	lda	#56+8+8
	sta	<oy
	loprintimage	  DownLeft
	rts
ShowUpRight:
	stz	<oy
	lda	#74 ;;#54
	sta	<ox
	loprintimage	  UpRight
	rts
ShowDownRight:
	lda	#74 ;;#54
	sta	<ox
	;;lda	  #58 ;;#42
	lda	#56+16
	sta	<oy
	loprintimage	  DownRight
	rts
IncStep:sed
	clc
	lda	<StepDig1
	adc	#1
	sta	<StepDig1
	lda	<StepDig2
	adc	#0
	sta	<StepDig2
	cld
	rts

ShowStep:
	lda	#16  ;;1
	sta	<oy
	lda	#102
	sta	<ox
	ldx	#>StepPrompt
	ldy	#<StepPrompt
;;	 jsr	 DrawText
	LDrawText
	lda	#48
	sta	<oy
	lda	#102+4
	sta	<ox
	ldx	<StepDig2
;;	 beq	 ?1
	LA2XY
	tya
	tax
	LDrawChar
	ldx	<StepDig1
	LA2XY
?3:	phy
	LDrawChar
	plx
	LDrawChar
	rts

; ***************************************************************************
ShowWin:
	LDA	#88
	STA	<ox
	LDA	#16
	STA	<oy
	JSR	ShowBlankStr
	LDA	#88
	STA	<ox
	LDA	#48
	STA	<oy
	JSR	ShowBlankStr

	bbs0	<EquFlag,?4
	bbr6	<WinFlag,?1
	ldx	#>LostPrompt
	ldy	#<LostPrompt
	bra	?2
?1:
	ldx	#>WinPrompt
	ldy	#<WinPrompt
	BRA	?2
?4:
	ldx	#>EquPrompt
	ldy	#<EquPrompt
?2:
	lda	#88
	sta	<ox
	lda	#32
	sta	<oy
	LDrawText
	RTS

; ***************************************************************************
ShowBlankStr:
	LDX	#>EmptyPrompt
	LDY	#<EmptyPrompt
	LDrawText
	RTS
; ***************************************************************************

;;=====================================================
;;	  堵フ囱笴栏祘Α跋
;;
;;=====================================================
Bw_help:
	db	'用[',0f8h,0d0h,']`[',0f8h,0d1h,']`[',0f8h,0d2h,']`[',0f8h,0b9h,']移动到想放棋子的地方.',0dh
	db	'[输入]做下子工作.',0dh
	db	'自己棋子将对方棋子夹住,无论直,横或斜线,包夹住的棋子'
	db	'成为自已棋子.',0dh
	db	'轮流下子,若无子可下时,下棋者必须这一步让对方走.',0dh
	db	'当双方无子可下时,游戏结束,棋子多者为赢家.',0dh
	db	'[返回]退出游戏.',0

BwStart:
	lda	<PRRh
	sta	GamePRRh
	lda	<PRRl
	sta	GamePRRl
	lda	#PsHelp
	sta	<HelpOffset
	lda	#>Bw_help
	sta	<HelpTextPH
	lda	#<Bw_help
	sta	<HelpTextPL

	lda	#<BwStart-1
	sta	HelpRtPrc
	lda	#>BwStart-1
	sta	HelpRtPrc+1

	stz	<Level		;; 秈

⌨️ 快捷键说明

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