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

📄 dicchess.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 4 页
字号:
; ***************************************************************************
; *     Project : Electronic Dictionary                                     *
; *        Date : 2003.9                                                    *
; *   File Name : DICCHESS.ASM                                              *
; ***************************************************************************

	chip	  W65C02S
	pw	128
	case	off
	externs on
	include st2202.def	;; Include ST2100 I/O define.
	include Data.def	;; Data RAM define.
	include Keydef.def
	include graph.def
	include fivedot.def
	include bios.h
	include graphics.h
;;=====================================================
;;	 >>> Constant define <<<
;;	     ---------------
;;=====================================================
;;	 >>> Data RAM define <<<
;;	     ---------------
;;=====================================================
;;	 Event vector table.

DS0	.SECTION		;; Data ROM location 10000h(Bank#2)
	public Valuetran
;;=====================================================

BWboardHline:
	db	53,1
	db	11111111b,11111111b,11111111b,11111111b,11111111b,11111111b,11111000b
BWboardVline:
	db	1,48
	db	11111111b,11111111b,11111111b,11111111b,11111111b,11111111b
fivehl:
	db	59,1
	db	11111111b,11111111b,11111111b,11111111b,11111111b,11111111b,11111111b,11100000b
fivehs:
	db	56,1
	db	11111111b,11111111b,11111111b,11111111b,11111111b,11111111b,11111111b
fivevl:
	db	1,47
	db	11111111b,11111111b,11111111b,11111111b,11111111b,11111111b
fivevs:
	db	1,45
	db	11111111b,11111111b,11111111b,11111111b,11111111b,11111000b
movechess:
	DB	7,7
	DB	00111000B
	DB	10001010B
	DB	11101101B
	DB	11011011B
	DB	10101000B
	DB	10001110B
	DB	00000000B
	;;db	  5,5
	;;db	  11011100b,01000001b,00011101b,10000000b
cpuchess:
	db	7,7		 ;1
	db    00111000b,11111011b,01111111b,11111111b,11101111b
	db    10001110b,00000000b
	;;db	  5,5
	;;db	  01110111b,11111111b,11110111b,00000000b
cpuchessb:
	db	8,8		   ;1
	db    00111000b,01111100b,11011110b,11111111b,11111110b
	db    01111100b,00111000b,00010000b
	;;db	  6,6
	;;db	  01110011b,11101111b,11111110b,01110000b,10000000b
mechess:
	db	7,7		 ;0
	db    00111000b,10001010b,10001100b,00011000b,00101000b
	db    10001110b,00000000b
	;;db	  5,5
	;;db	  01110100b,01100011b,00010111b,00000000b
mechessb:
	db	8,8		   ;0
	db    00111000b,01000100b,10100010b,10000011b,10000010b
	db    01000100b,00111000b,00010000b
	;;db	  6,6
	;;db	  01110010b,00101000b,11100010b,01110000b,10000000b
cross:
	db	7,8
	db    00010000b,00100000b,01000111b,11110001b,00000010b
	db    00000100b,00001000b
	;;db	  5,6
	;;db	  00100001b,00111110b,01000010b,00010000b
crossb:
	db	8,8
	db    00010000b,00010000b,00010000b,11111111b,00010000b
	db    00010000b,00010000b,00010000b
	;;db	  6,6
	;;db	  00100000b,10001111b,11001000b,00100000b,10000000b

BWUPborder:
        db      74,6
	db    11111111b,11111111b,11111111b,11111111b,11111111b
        db    11111111b,11111111b,11111111b,11111111b,11100000b
	db    00000000b,00000000b,00000000b,00000000b,00000000b
	db    00000000b,00000000b,00000000b,00011011b,11111111b
	db    11111111b,11111111b,11111111b,11111111b,11111111b
	db    11111111b,11111111b,11110110b,10000010b,00000010b
	db    00000010b,00000010b,00000010b,00000010b,00000010b
	db    00000010b,00000101b,10100000b,10000000b,10000000b
	db    10000000b,10000000b,10000000b,10000000b,10000000b
	db    10000001b,01101000b,00100000b,00100000b,00100000b
	db    00100000b,00100000b,00100000b,00100000b,00100000b
	db    01010000b
BWDownBorder:
	db	74,6
	db    10100000b,10000000b,10000000b,10000000b,10000000b
	db    10000000b,10000000b,10000000b,10000001b,01101000b
	db    00100000b,00100000b,00100000b,00100000b,00100000b
	db    00100000b,00100000b,00100000b,01011010b,00001000b
	db    00001000b,00001000b,00001000b,00001000b,00001000b
	db    00001000b,00001000b,00010110b,11111111b,11111111b
	db    11111111b,11111111b,11111111b,11111111b,11111111b
	db    11111111b,11111101b,10000000b,00000000b,00000000b
	db    00000000b,00000000b,00000000b,00000000b,00000000b
	db    00000000b,01111111b,11111111b,11111111b,11111111b
	db    11111111b,11111111b,11111111b,11111111b,11111111b
	db    11110000b
;;=========
upborder:
	db	79,8
	db    11111111b,11111111b,11111111b,11111111b,11111111b
	db    11111111b,11111111b,11111111b,11111111b,11111110b
	db    00000000b,00000000b,00000000b,00000000b,00000000b
	db    00000000b,00000000b,00000000b,00000000b,00000011b
	db    11111111b,11111111b,11111111b,11111111b,11111111b
	db    11111111b,11111111b,11111111b,11111111b,11111000b
	db    10000000b,10000000b,10000000b,10000000b,10000000b
	db    10000000b,10000000b,10000000b,10000000b,10000001b
	db    00000001b,00000001b,00000001b,00000001b,00000001b
	db    00000001b,00000001b,00000001b,00000001b,00000010b
	db    00000010b,00000010b,00000010b,00000010b,00000010b
	db    00000010b,00000010b,00000010b,00000010b,00000100b
	db    00000100b,00000100b,00000100b,00000100b,00000100b
	db    00000100b,00000100b,00000100b,00000100b,00001000b
	db    00001000b,00001000b,00001000b,00001000b,00001000b
	db    00001000b,00001000b,00001000b,00001000b
downborder:
	db	79,8
	db    00010000b,00010000b,00010000b,00010000b,00010000b
	db    00010000b,00010000b,00010000b,00010000b,00010000b
	db    00100000b,00100000b,00100000b,00100000b,00100000b
	db    00100000b,00100000b,00100000b,00100000b,00100000b
	db    01000000b,01000000b,01000000b,01000000b,01000000b
	db    01000000b,01000000b,01000000b,01000000b,01000000b
	db    10000000b,10000000b,10000000b,10000000b,10000000b
	db    10000000b,10000000b,10000000b,10000000b,10001111b
	db    11111111b,11111111b,11111111b,11111111b,11111111b
	db    11111111b,11111111b,11111111b,11111111b,11100000b
	db    00000000b,00000000b,00000000b,00000000b,00000000b
	db    00000000b,00000000b,00000000b,00000000b,00111111b
	db    11111111b,11111111b,11111111b,11111111b,11111111b
	db    11111111b,11111111b,11111111b,11111111b,10000000b
	db    00000000b,00000000b,00000000b,00000000b,00000000b
	db    00000000b,00000000b,00000000b,00000000b

leftborder:
	db	8,64
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
fileftborder:
	db	8,79
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10111111b
	db	10100000b
	db	10100000b
	db	10100000b
	db	10100000b
rightborder:
	db 7,64
	;;db 5,64
	db    00001010b,00010100b,00101111b,11010000b,10100001b
	db    01000010b,10000101b,00001010b,00010100b,00101111b
	db    11010000b,10100001b,01000010b,10000101b,00001010b
	db    00010100b,00101111b,11010000b,10100001b,01000010b
	db    10000101b,00001010b,00010100b,00101111b,11010000b
	db    10100001b,01000010b,10000101b,00001010b,00010100b
	db    00101111b,11010000b,10100001b,01000010b,10000101b
	db    00001010b,00010100b,00101111b,11010000b,10100001b
	db    01000010b,10000101b,00001010b,00010100b,00101111b
	db    11010000b,10100001b,01000010b,10000101b,00001010b
	db    00010100b,00101111b,11010000b,10100001b,01000010b
	db    10000101b
firightborder:
	db 7,79
	;;db 5,64
	db    00001010b,00010100b,00101111b,11010000b,10100001b
	db    01000010b,10000101b,00001010b,00010100b,00101111b
	db    11010000b,10100001b,01000010b,10000101b,00001010b
	db    00010100b,00101111b,11010000b,10100001b,01000010b
	db    10000101b,00001010b,00010100b,00101111b,11010000b
	db    10100001b,01000010b,10000101b,00001010b,00010100b
	db    00101111b,11010000b,10100001b,01000010b,10000101b
	db    00001010b,00010100b,00101111b,11010000b,10100001b
	db    01000010b,10000101b,00001010b,00010100b,00101111b
	db    11010000b,10100001b,01000010b,10000101b,00001010b
	db    00010100b,00101111b,11010000b,10100001b,01000010b
	db    10000101b,00001010b,00010100b,00101111b,11010000b
	db    10100001b,01000010b,10000101b,00001010b,00010100b
	db    00101111b,11010000b,10100001b,01000010b,10000000b

upleft:
	;;db	  6,6
	db	6,8
	db	11111110b,00001011b,11101000b,10100010b,10001010b,00101000b
downleft:
	;;db	  6,6
	db	6,8
	db	10100010b,10001010b,00101000b,10111110b,00001111b,11000000b
upright:
	;;db	  5,6
	db	5,8
	db	11111000b,01111010b,01010010b,10010100b,10100101b
downright:
	;;db	  5,6
	db	5,8
	db	00101001b,01001010b,01011110b,10000111b,11100000b
valuetran:
	db	00000001b,00000010b,00000100b,00001000b,00010000b,00100000b,01000000b,10000000b
dlocate:
	db	0
xlocate:
	db	8,16,24,32,40,48,56,64,72
	;;db	  6,12,18,24,30,36,42,48,54

clearbugstring:
	db   8,8
	db   0,0,0,0,0,0,0,0
MatchValue:
	DB	  90H,255
	DB	  91H,60
	DB	  92H,60
	DB	  93H,33
	DB	  94H,8
	DB	  80H,255
	DB	  81H,60
	DB	  82H,22
	DB	  83H,8
	DB	  84H,7
	DB	  70H,255
	DB	  71H,33
	DB	  72H,20
	DB	  73H,8
	DB	  60H,255
	DB	  61H,45
	DB	  62H,22
	DB	  63H,9
	DB	  50H,255
	DB	  51H,45
	DB	  52H,9
	DB	  40H,60
	DB	  41H,21
	DB	  42H,7
	DB	  30H,22
	DB	  31H,7
	DB	  20H,8 	;;8
	DB	  21H,2 	;;3
	DB	  10H,2
	DB	  11H,1
	DB	  54H,255
	DB	  55H,32
	DB	  56H,5
	DB	  44H,33
	DB	  45H,5
	DB	  46H,3
	DB	  34H,6
	DB	  35H,4
	DB	  24H,3
	DB	  25H,2
	DB	  14H,1
	DB	  15H,1
StepPrompt:
	db	'步数',0   ;;步数
WinPrompt:
	db	'你赢了!',0 ;;你赢了
LostPrompt:
	db	'机器赢了!',0   ;;你输了
EquPrompt:
	db	'平局',0   ;;又平手
EmptyPrompt:
	db	'      ',0
;;EmptyPrompt1:
;;	  db	  '    ',0
NoMove:
	db	'停步',0   ;;停步

NoMoveMask:
	db	'    ',0
;;=====================================================
PS0b	.SECTION		;; Program ROM location 4000h
BankNo	equ	 gamebank
;;=====================================================
	public	GameEvent
	public	delay250ms

	public	FiveStart
	public	BwStart
	public	FiveKeyIn
	public	BwKeyIn
	public	FiveTimer
	public	BWTimer
;;[S]-----------------------------------------------[S]
;;   Draw Black-White Chess Board
;;[S]-----------------------------------------------[S]
drawBWboard:
	lda	#3
	sta	<ox
        stz     <oy                     ;
        loprintimage BWUpBorder         ; PrnImage(3,3,BWUpBorder);
	lda	#70
	sta	<oy
        loprintimage BWDownBorder       ; PrnImage(3,70,BWDownBorder);
        lda     #3
	sta	<ox
        lda     #6
	sta	<oy
        loprintimage LeftBorder         ; PrnImage(3,6,LeftBorder);
	lda	#72-2
	sta	<ox
        loprintimage RightBorder        ; PrnImage(3,70,LeftBorder);

        stz     <Locate_Y               ; Locate_Y = 0;

?3:     stz     <Locate_X               ; Locate_X = 0;
        ldx     <Locate_Y               ; X = Locate_Y;
        clc                             ;
        lda     dlocate,x               ; A = dlocate[x];
        adc     #6                      ; A += 6;
        sta     <oy                     ; oy = A;
?2:     ldx     <Locate_X               ; x = Locate_X;
        lda     xlocate,x               ; A = xlocate[X];
        sta     <ox                     ; ox = A;
        jsr     Get_Locate_Value        ; Get_Locate_Value();
	bbs1	<Locate_Value,?ShowCrossB
	bbs0	<Locate_Value,?ShowCpuChess
?ShowMeChess:
	loprintimage	  MeChessB
	bra	?1
?ShowCpuChess:
	loprintimage	  CpuChessB
	bra	?1
?ShowCrossB:
	loprintimage	  CrossB
?1:	inc	<locate_X
	bbr3	<Locate_X,?2
	inc	<Locate_Y
	bbr3	<Locate_Y,?3
	rts
;;[S]-----------------------------------------------[S]
;;   Draw Five-Point Chess Board
;;[S]-----------------------------------------------[S]
drawFIboard:
	jsr    clearbugshi
	clc
	lda	<DispCenterY
	;;adc	  #6	 ;;zjw 2001,11,20
	adc	#8
	cmp	#16
	bcc	?1
	dea
?1:	sta	<Locate_Y
?nexty: lda	<DispCenterX
	adc	#8
	cmp	#16
	bcc	?3
	dea
?3:	sta	<Locate_X
?nextx: lda	<Locate_X
	ina
	sec
	sbc	<DispCenterX
	bcc	?NextDot1
	tax
	lda	DLocate,x
	sta	<ox

	lda	<Locate_Y
	ina
	sec
	sbc	<DispCenterY
	bcc	?NextDot2
	tax
	lda	Dlocate,x
	sta	<oy
	jsr	Get_Locate_Value
	sec
	lda	<Locate_X
	sbc	<DispCenterX
	cmp	#8
	beq	?4
	bbs1	<Locate_Value,?ShowCross1
	bbs0	<Locate_Value,?ShowCpu1
?ShowMe1:
	loprintimage	  MeChessb
	bra	?NextDot
?ShowCpu1:
	loprintimage	  CpuChessb
	bra	?NextDot
?ShowCross1:
	loprintimage	  Crossb
?NextDot:
	dec	<Locate_X
	bpl	?nextx
?NextDot1:
	dec	<Locate_Y
	bpl	?nexty
?NextDot2:
	bra	?showborder
?4:
	bbs1	<Locate_Value,?ShowCross
	bbs0	<Locate_Value,?ShowCpu
?ShowMe:
	loprintimage	  MeChess
	bra	?NextDot
?ShowCpu:
	loprintimage	  CpuChess
	bra	?NextDot
?ShowCross:

	loprintimage	  Cross
	bra	?NextDot
?showborder:
	lda	<DispCenterX
	bne	?NotLeft
	jsr	ShowLeft
	lda	<DispCenterY
	bne	?notUpLeft
	jsr	ShowUp
	jsr	ShowUpLeft
	rts
?notUpLeft:
	;;cmp	  #10
	cmp	#8	;;zjw
	bne	?NotDownLeft
	jsr	ShowDown
	jsr	ShowDownLeft
?NotDownLeft:
	rts
?NotLeft:
	cmp	#8
	bne	?NotRight
	jsr	ShowRight
	lda	<DispCenterY
	bne	?notUpRight
	jsr	ShowUp
	jsr	ShowUpRight
	rts
?notUpRight:
	;;cmp	  #10
	cmp	#8	;;zjw
	bne	?NotDownRight
	jsr	ShowDown
	jsr	ShowDownRight
?NotDownRight:
	rts
?NotRight:
	lda	<DispCenterY
	bne	?NotUp
	jsr	ShowUp
	rts

⌨️ 快捷键说明

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