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

📄 els.asm

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

        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 bios.h
        include graphics.h

; ***************************************************************************
SCORE_POS       EQU     4
; ***************************************************************************

;;       public  els_event
        public  els_load
        public  els_keypress
        public  els_timer
        public  els_keyup
        public  els_keydown
        public  els_min
        public  els_sec
        public  els_hsec

;;       include  els.h

;;InputBuff       equ     300h
GameState       equ     CData+1

Tag             equ 700h
TagBack         equ 400h
which_game      equ 83h
GameStartFlag   equ 84h
Row             equ 85h
Col             equ 86h
InitTypeEnable  equ 87h
TimerEnable     equ 88h
KeyEnable       equ 89h
BigType         equ 8ah
SmallType       equ 8bh
BlockInvertFlag equ 8ch
position1       equ 8dh
position2       equ 8eh
position3       equ 8fh
position4       equ 90h
CenterPos       equ 91h
BPos            equ 92h
DelRow          equ 93h
DelCol          equ 94h
BRow            equ 95h
KillFlag        equ 96h
DeBug           equ 97h
ZjwFlag         equ 98h
KeyDownFlag     equ 99h
EndGameFlag     equ 9ah
Tscore          equ 9bh
Hscore          equ 9ch
Mscore          equ 9dh
Lscore          equ 9eh
Pre             equ 9fh
ScoreFlag       equ 0a0h
ElsSpeed        equ 0a1h
ElsPause        equ 0a2h
ElsSplitFlag    equ 0a3h
ElsLeftContinue equ 0a4h
ElsRightContinue        equ 0a5h
;;ElsChangeContinue      equ 0a6h
;;=====================================================

        public    els_HSec
        public    els_Sec
        public    els_Min
        public    els_KeyDown
        public    els_KeyUp
        public    els_Timer
        public    els_KeyPress
        public    els_load
        public    els_helpRt
        public    basicimage
        public    big7position
        public    big6position
        public    big5position
        public    big4position
        public    big3position
        public    big2position
        public    bigposition

ds0     .SECTION           ;;jrd!!!!
els_event:
        dw      els_bank  ;;jrd!!!!
        dw      els_HSec-1
        dw      els_Sec-1
        dw      els_Min-1
        dw      els_KeyDown-1
        dw      els_KeyUp-1
        dw      els_Timer-1
        dw      els_KeyPress-1
        dw      els_Load-1
        dw      els_helpRt-1

ElsHelp:
 db      '按上,下键选择速度;按Enter开始游戏.',0dh
 db      '按左,右,下键移动方块;按上键旋转方块;按P键暂停或继续游戏',0

els_pausetable:
        db 'PAUSED',0
els_clrpausetab:
        db '      ',0
els_endimage:
        db 'GAME OVER',0
els_defenimage:
        db 'SCORE',0
els_speedimage:
        db 'CHOOSE A SPEED:',0
els_speedstr:
        db 'SPEED',0
;els_walltable2:
;        db '********************',0
WallTable:
        db 3,80
        DB 11110110B
        DB 11111111B
        DB 01101111B
        DB 11110110B
        DB 11111111B
        DB 01101111B
        DB 11110110B
        DB 11111111B
        DB 01101111B
        DB 11110110B
        DB 11111111B
        DB 01101111B
        DB 11110110B
        DB 11111111B
        DB 01101111B
        DB 11110110B
        DB 11111111B
        DB 01101111B
        DB 11110110B
        DB 11111111B
        DB 01101111B
        DB 11110110B
        DB 11111111B
        DB 01101111B
        DB 11110110B
        DB 11111111B
        DB 01101111B
        DB 11110110B
        DB 11111111B
        DB 01101111B
        DB 11110110B
        DB 11111111B
        DB 01101111B
        DB 11110110B
        DB 11111111B
        DB 01101111B

RandTypeTable:
        db 1,4,6,5,4,1,2,3,2,3,4,1,2,3,2,3
        db 1,7,2,1,7,2,3,1,1,6,7,2,3,1,1,6
        db 1,7,7,2,2,5,1,4,5,4,2,5,1,4,5,4
        db 4,1,4,6,7,5,7,5,6,2,7,5,7,5,6,2
        db 6,6,1,4,4,6,7,6,3,5,4,6,7,6,3,5
        db 1,7,1,5,7,7,2,2,3,2,7,7,2,2,3,2
        db 4,2,4,1,2,3,2,3,4,1,2,3,2,3

clear_image_block:
        db  15,24
BasicImage:
        db 5,5
        db 11111101b
        db 01110111b
        db 01011111b
        db 10000000b

BigPosition:
        dw 00h
        dw Sub_Big1-1
        dw Sub_Big2-1
        dw Sub_Big3-1
        dw Sub_Big4-1
        dw Sub_Big5-1
        dw Sub_Big6-1
        dw Sub_Big7-1
Big2Position:
        dw 00h
        dw Big2_SmallType1-1
        dw Big2_SmallType2-1
        dw Big2_SmallType3-1
        dw Big2_SmallType4-1
Big3Position:
        dw 00h
        dw Big3_SmallType1-1
        dw Big3_SmallType2-1
        dw Big3_SmallType3-1
        dw Big3_SmallType4-1
Big4Position:
        dw 00h
        dw Big4_SmallType1-1
        dw Big4_SmallType2-1
        dw Big4_SmallType3-1
        dw Big4_SmallType4-1
Big5Position:
        dw 00h
        dw Big5_SmallType1-1
        dw Big5_SmallType2-1
        dw Big5_SmallType1-1
        dw Big5_SmallType2-1
Big6Position:
        dw 00h
        dw Big6_SmallType1-1
        dw Big6_SmallType2-1
        dw Big6_SmallType1-1
        dw Big6_SmallType2-1
Big7Position:
        dw 00h
        dw Big7_SmallType1-1
        dw Big7_SmallType2-1
        dw Big7_SmallType1-1
        dw Big7_SmallType2-1

ps0d     .section
BankNo          equ     els_bank

els_helpRt:
        bra     els_Begin
els_Load:

        LDA     #1
        STA     <which_game
        ;stz <which_game                 ;;=0-9
els_Begin:
        ;;stz <ElsChangeContinue
        stz <ElsLeftContinue
        stz <ElsRightContinue
        ldx #25
        lsettimer
        lda #10
        sta <ElsSplitFlag
        lda     #>ElsHelp
        sta     <HelpTextPH
        lda     #<ElsHelp
        sta     <HelpTextPL

        lda     #Ds0Help                        ;;Set Flag
        sta     <HelpOffset             ;;
        stz <EndGameFlag
        stz <ElsPause                   ;;clear ElsPause Flag

        lsetscreen_to_ds0 0
;;      lda    #<ds0bank
;;      sta    <drr
;;      lda     #>ds0bank
;;      sta     <DrrH
        stz <GameStartFlag
        stz <TimerEnable

;        stz <oy
;        stz <ox
;        ldrawtext els_walltable2
;        lda #70-6
;        sta <oy
;        ldrawtext els_walltable2

;        lsetscreen 0

        stz     <oy
        lda     #6
        sta     <ox
        LoPrintimage     WallTable
        stz     <oy
        lda     #160-6
        sta     <ox
        LoPrintimage     WallTable

        lda #20
        sta <oy
        lda #20
        sta <ox
        ldrawtext els_speedimage
        lda #76
        sta <ox
        lda #40
        sta <oy
        lda <which_game
        ora #30h
        tax
        LDrawChar12
        lda    #<ds0bank
        sta    <drr
        lda     #>ds0bank
        sta     <DrrH

        jmp   jmplmainu
els_timer:
        ;;rmb3 <EFlag
    lda  #80h
    sta  <btsr
        lda #1
        cmp <TimerEnable
        beq ?12
        jmp ?123
?12:
        lda <ElsLeftContinue
        cmp #2
        bne ?NotL2
        lkeytone
        jsr Sub_BigLeft
        jmp ?qweR
?NotL2:
        cmp #1
        bne ?qweL
        inc <ElsLeftContinue
        jmp ?qweR
?qweL:
        lda <ElsRightContinue
        cmp #2
        bne ?NotR2
        lkeytone
        jsr Sub_BigRight
        jmp ?qweR
?NotR2:
        cmp #1
        bne ?qweR
        inc <ElsRightContinue
?qweR:
        lda <ElsSplitFlag
        dec
        sta <ElsSplitFlag
        cmp <which_game
        beq ?1
        jmp	jmp_LMAINU
?1:
        lda #10
        sta <ElsSplitFlag
;;******************************************
        ldx #25
        lsettimer
        jsr Sub_BigDown
?123:
jmplmainu:
els_HSec:
els_Sec:
els_Min:
els_KeyPress:
jmp_LMAINU:
        LMAINU
els_KeyUp:
        ;;stz <ElsChangeContinue
        stz <ElsLeftContinue
        stz <ElsRightContinue
        jmp	jmp_LMAINU

els_keydown:
        lread_key_again
        lkeytone
        lda     #1
        cmp     <EndGameFlag
        bne     ?LetsGo
        lda     <KeyNo
        cmp #EscKey
        bne ?NotEndEsc
        jmp els_Begin
?NotEndEsc:
        cmp #EnterKey
        bne ?NotEndEnter
        jsr Sub_GameInit
        jmp     jmplmainu
?NotEndEnter:
?LetsGo:
        lda #1
        cmp     <GameStartFlag
        beq     ?dsfjkdsfl
        jmp     ?NotGameStart
?dsfjkdsfl:
        lda     #1h
        cmp     <KeyEnable
        bne     ?00034
        lda     <keyno
        ;;cmp    #CKey
        cmp     #DownKey
        bne     ?00030
        lda     <ElsPause
        cmp #1
        beq     ?pqoduvny
        jsr     Sub_BigDown
    jsr   delay_time
        smb3    <Eflag
?pqoduvny:
        jmp   jmplmainu
?00030:
        cmp     #UpKey
        ;;cmp    #VKey
        bne     ?00031
        lda     <ElsPause
        cmp #1
        beq     ?edwsfiou
        ;;lda #1
        ;;sta <ElsChangeContinue
        jsr     Sub_BigChange
?edwsfiou:
        jmp     jmplmainu
?00031:
        cmp     #LeftKey
        ;;cmp    #DKey
        bne     ?00032
        lda     <ElsPause
        cmp #1
        beq     ?edwsf
        lda #1
        sta <ElsLeftContinue
        jsr     Sub_BigLeft
?edwsf:
        jmp     jmplmainu
?00032:
        ;;cmp    #ShiftKey
        cmp     #RightKey
        bne     ?00033
        lda     <ElsPause
        cmp #1
        beq     ?zijnuhb
        lda #1
        sta <ElsRightContinue
        jsr     Sub_BigRight
?zijnuhb:
        jmp     jmplmainu
?00033:
        cmp     #EscKey
        bne     ?00034
        jmp     els_Begin
?00034:
        cmp     #PKey
        bne     ?00035
        lda    #<ds0bank
        sta    <drr
        lda     #>ds0bank
        sta     <DrrH
        inc <ElsPause
        lda <ElsPause
        cmp #1
        bne     ?NotToPause
        stz <TimerEnable
        lda #64
        sta <oy
        lda #112
        sta <ox
        ldrawtext els_pausetable
        jmp     jmplmainu
?NotToPause:
        lda <ElsPause
        cmp #2
        bne    ?NotReturnTimer
        stz <elsPause
        lda #1
        sta <TimerEnable
        lda #64
        sta <oy
        lda #112
        sta <ox
        ldrawtext els_clrpausetab
        ;;lda #1
        ;;sta <KeyEnable
?NotReturnTimer:
?00035:
        jmp     jmplmainu
?NotGameStart:
        lda     <keyno
        cmp     #DownKey
        bne     ?NotDownKeyPress
        inc <which_game
        lda <which_game
        cmp #10
        bne ?NotSpeed10
        LDA     #1
        STA     <which_game
        ;stz <which_game
?NotSpeed10:
        lda #76
        sta <ox
        lda #40
        sta <oy
        lda <which_game
        ora #30h
        tax
        LDrawChar12
        jmp     jmplmainu
?NotDownKeyPress:
        cmp     #UpKey
        bne     ?NotUpKeyPress
        dec <which_game
        lda <which_game
        ;cmp #255
        bne ?NotSpeed0
        lda #9
        sta <which_game
?NotSpeed0:
        lda #76
        sta <ox
        lda #40
        sta <oy
        lda <which_game
        ora #30h
        tax
        LDrawChar12
        lda    #<ds0bank
        sta    <drr
        lda     #>ds0bank
        sta     <DrrH
        jmp   jmplmainu

?NotUpKeyPress:
        cmp     #EscKey
        bne     ?NotEscKeyPress
;;================================
;;ESC 键退出到 ---> 已下载游戏菜单:
?liu_add_here:
;;       lda     #<NetMenuSub1
;;       sta     StrAddrL
;;       lda     #>NetMenuSub1
;;       sta     StrAddrH
;;       lda     #0
;;       sta     ItemStart
;;       sta     ItemOffset
;;       ldx     #15             ;;<Mode
;;       stx     <ModeSave       ;; Save last mode。
;;       lda     #MenuMode
;;       sta     <Mode           ;; Enter Menu Select Mode
;;       smb7    <EFlag
;;       jmp	jmp_LMAINU
        stz     <ExtraMode
        lda     #>Els_Return-1
        pha
        lda     #<Els_Return-1
        pha
        lda     #>GameBank
        pha
        lda     #<GameBank
        jmp     longgo

?NotEscKeyPress:
        cmp     #EnterKey
        bne     ?NotEnterKeyPress
        smb0    <GameStartFlag

        jsr     Sub_GameInit
?NotEnterKeyPress:
        jmp   jmplmainu

Sub_GameInit:
        ;;*********************
        ;;       初始化 Timer 事件
        ;;*********************
        ldx     #25
        lsettimer
        ;;jsr    count_timer_value
        ;;**********************
        ;;       建墙
        ;;*********************
        lsetscreen 0
        stz     <oy
        lda     #56
        sta     <ox
        LoPrintimage     WallTable
        stz     <oy
        lda     #109
        sta     <ox
        LoPrintimage     WallTable

        ;;********************************
        ;;       初始化参数: Score,InitTypeEnable,Row,Col
        ;;       DownEnable,TimerEnable,KeyEnable
        ;;********************************
        stz <Tscore              ;;       Score=0
        stz <Hscore
        stz <Mscore
        stz <Lscore
        stz <InitTypeEnable     ;;       InitTypeEnable=0
        lda #1
        sta <Row                ;;       Row=14
        lda #5H
        sta <Col                ;;       Col=5
        lda #1h
        sta <TimerEnable        ;;       TimerEnable=1
        sta <KeyEnable          ;;       KeyEnable=1
        stz <KeyDownFlag
        stz <EndGameFlag
        ;;********************************
        ;;       显示分数
        ;;*********************************


        lda #20
        sta <oy
        lda     #SCORE_POS
;        lda #8
        sta <ox
        ldx #30h
        LDrawChar12
        lda     #SCORE_POS+8
;        lda #16
        sta <ox
        ldx #30h
        LDrawChar12
        lda     #SCORE_POS+16
;        lda #24
        sta <ox
        ldx #30h
        LDrawChar12
        lda     #SCORE_POS+24
;        lda #32
        sta <ox
        ldx #30h
        LDrawChar12
        lda     #SCORE_POS+32
;        lda #40
        sta <ox
        ldx #30h
        LDrawChar12
        lda     #SCORE_POS+40
;        lda #48
        sta <ox
        ldx #30h
        LDrawChar12
        lda    #<ds0bank
        sta    <drr
        lda     #>ds0bank
        sta     <DrrH
        lda #4
        sta <oy
        lda #0
        sta <ox
        ldrawtext       els_defenimage

        lda #4
        sta <oy
        lda #116
        sta <ox
        ldrawtext       els_speedstr
        lda #20
        sta <oy
        lda #132
        sta <ox
        lda <which_game
        ora #30h
        tax
        LDrawChar12

⌨️ 快捷键说明

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