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

📄 test.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;;;;;;;;        lda     #80h
;;;;;;;;        trb     change_sound_flag
;;;;;;;;        stz     <drrh
;;;;;;;;        stz     <drrl
;;;;;;;;        ldx     #0ffh
;;;;;;;;        txs
;;;;;;;;        lda     #>EntPowOff_xx-1
;;;;;;;;        pha
;;;;;;;;        lda     #<EntPowOff_xx-1
;;;;;;;;        pha
;;;;;;;;        lda     #>biosbank
;;;;;;;;        pha
;;;;;;;;        lda     #<biosbank
;;;;;;;;        stz     <pb
;;;;;;;;        smb7    <lctr
;;;;;;;;        ldx     #3
;;;;;;;;?1:
;;;;;;;;        jsr     delay_xxxx
;;;;;;;;        bbr5    <pa,?1
;;;;;;;;        dex
;;;;;;;;        bpl     ?1
;;;;;;;;        ldx     #0ffh
;;;;;;;;        stx     <pb
;;;;;;;;        jmp     longgo
;;==================================
;;开机缺陷在这里修改:
EntPowon_process:
        STZ     <LCTR

        LInitIO_Bug

        smb7    <pd
        sei
        ldx     #0ffh
        txs
        cli
        lda     power_flag
        ora     #01h
        sta     power_flag
        lda     #>popc3x-1
        pha
        lda     #<popc3x-1
        pha
        lda     #>biosbank
        pha
        lda     #<biosbank
        jmp     longgo

;;;;;        jsr     change_alarm_sound
;;;;;        lda     #80h
;;;;;        and     change_sound_flag
;;;;;        bne     ?to_set
;;;;;        rts
;;;;;?to_set:
;;;;;        sei
;;;;;        jsr     ljsr
;;;;;        dw      biosbank
;;;;;        dw      InitIO-1        ;; Initial I/O states.
;;;;;        lda     #04h
;;;;;        ora     <IENAB
;;;;;        sta     <IENAB
;;;;;        sta     <IENA           ;; (5) Enable Base timer interrupt.
;;;;;        rmb7    <SysF           ;; Clear power off states flag.
;;;;;
;;;;;        lda     <PA             ;; Reload last state of port A.
;;;;;        rmb3    <EFlag          ;; Clear Key down event flag.
;;;;;
;;;;;        lda     #clockmode       ;; PreSet Clock mode.
;;;;;        bbr5    <SF0,?pop7       ;;sf0.5=1 alarm ok
;;;;;        rmb5    <SF0
;;;;;        lda     #alarmmode
;;;;;?pop7:
;;;;;        sta     <Mode
;;;;;        stz     <ExtraMode      ;; Clear extra mode.
;;;;;        jsr     InitAll_in_test
;;;;;        ldx     #0ffh
;;;;;        txs
;;;;;        cli
;;;;;        lda     #>SetMode5-1
;;;;;        pha
;;;;;        lda     #<SetMode5-1
;;;;;        pha
;;;;;        lda     #>biosbank
;;;;;        pha
;;;;;        lda     #<biosbank
;;;;;        jmp     longgo
;;;;;
;;;;;InitAll_in_test:
;;;;;;; PreClear ZData area.即清CData
;;;;;        sei
;;;;;        ldy     <soundflag
;;;;;        ldx     #ZDataSize-1
;;;;;inia2:  stz     ZData,x
;;;;;        dex
;;;;;        bpl     inia2
;;;;;        sty     <soundflag
;;;;;        cli
;;;;;;; PreClear PData area.(100H ~ 18FH)
;;;;;        ldx     #0
;;;;;inia4:  stz     MenuBuff,x
;;;;;        inx
;;;;;        cpx     #stack_last_ram-MenuBuff  ;;清:帮助用RAM,lcd用的临时RAM
;;;;;        bne     inia4
;;;;;        lSetScreen   1
;;;;;;; Random generation off.
;;;;;        lRandomOff
;;;;;;; Set cursor to normal size.
;;;;;        lSetCursorSize  1
;;;;;Inia5:
;;;;;;; Stop ScanF.
;;;;;        stz     <SCanFF
;;;;;        lCursorOff       ;; Set cursor off.
;;;;;
;;;;;        rts

if_update_5000icon_or:
        lupdate_all_icon
        rts
invert_5000_or:
        LBlockInvert
        rts
updatescreen_5000_or:
        jsr	CALL_LUpdateScreen
        rts

warm_up_start_last:
        rts

test_Main_yh:
        jsr     change_alarm_sound
        jsr     LJSR
        dw      biosBank
        dw      Main_yh-1
test_Mainu_yh:
        jsr     change_alarm_sound
        jsr     LJSR
        dw      biosBank
        dw      Mainu_yh-1
;test_Main_5000:
;        jsr     change_alarm_sound
;        jsr     LJSR
;        dw      biosBank
;        dw      Main_5000-1
;test_Mainu_5000:
;        jsr     change_alarm_sound
;        jsr     LJSR
;        dw      biosBank
;        dw      Mainu_5000-1

change_alarm_sound:
   rts
        lda     #00100000b
        and     AlarmFlag2
        beq     ?skip_change_sound
        bbs4    <soundflag,?1
        lda     #80h
        trb     change_sound_flag
?1:
        lda     ToneCounter
        beq     ?skip_change_sound
        lda     #80h
        and     change_sound_flag
        bne     ?skip_change_sound

        sei
        lda     #80h
        ora     change_sound_flag
        sta     change_sound_flag
;;      lsoundoff
        lda     #00100000b   ;;这里改变后只能按有效键停止.
        trb     AlarmFlag2
        lda     #<Susanna1
        sta     <Melodyl1
        lda     #>Susanna1
        sta     <Melodyh1
        lda     #<Susanna2
        sta     <Melodyl2
        lda     #>Susanna2
        sta     <Melodyh2

        lda     <melody_drrh
        and     #f8h
        ora     #>ps1_AtBank0Bank
        sta     <melody_drrh
        lda     #<ps1_AtBank0Bank
        sta     <melody_drrl
        jsr     ljsr
        dw      biosbank
        dw      melody-1
        cli
?skip_change_sound:
        rts

test_check_secret:
        jsr     ljsr
        dw      OTherBank
        dw      check_if_secret-1
        jsr     ljsr
        dw      cal_bank
        dw      system_init_cal-1

        lda     #12h
        sta     MALMHour1+0
        sta     MALMHour1+2
        sta     MALMHour1+4
        sta     MALMHour1+6
        sta     MALMHour1+8

        rts

read_key_test:
        ldy     #3
?scanf_key_next:
        jsr     scanf_key_one_time_in_test

        lda     keyno_next
        cmp     <keyno
        beq     ?xx

        bra     scanf_key_no_key_in_test
?xx:
        dey
        bpl     ?scanf_key_next
        jsr     delay_xxxx
        rmb3    <eflag
        rts

scanf_key_one_time_in_test:
        sei
        stz     keyno_next
        ldx     #0ffh
?scanf_key_loop:
        inx
        cpx     #9
        bcs     ?scanf_key_no_key
        lda     ScanKeyTalx,x
        sta     <pb
        jsr     delay_xxxx
        lda     <pa
        cmp     #0ffh
        bne     ?paintxxx
        clc
        lda     keyno_next
        adc     #8
        sta     keyno_next
        bra     ?scanf_key_loop

?paintxxx:
        bbr0    <PA,kinc0_in_test ;; Key press.
        bbr1    <PA,kinc1_in_test
        bbr2    <PA,kinc2_in_test
        bbr3    <PA,kinc3_in_test
        bbr4    <PA,kinc4_in_test
        bbr5    <PA,kinc5_in_test
        bbr6    <PA,kinc6_in_test
        bbr7    <PA,kinc7_in_test

?scanf_key_no_key:
scanf_key_no_key_in_test:
        stz     <Pb             ;; Scan all key。
        lda     #nullkey
        sta     keyno_next
        sta     <keyno
        jsr     delay_xxxx
        lda     <pa
        rmb3    <EFlag          ;; 设定Key up事件处理旗号.
        rmb4    <ireql

        ldx     #0ffh
        txs
        cli
        jmp     WaitTestEvent

kinc7_in_test:
        inc     keyno_next
kinc6_in_test:
        inc     keyno_next
kinc5_in_test:
        inc     keyno_next
kinc4_in_test:
        inc     keyno_next
kinc3_in_test:
        inc     keyno_next
kinc2_in_test:
        inc     keyno_next
kinc1_in_test:
        inc     keyno_next
kinc0_in_test:
        stz     <pb             ;; Scan all key。
        jsr     delay_xxxx
        lda     <pa

        rmb4    <ireql
        cli
        rts

;;=========================================
read_key_again:
        ldy     #3
?scanf_key_next:
        jsr     scanf_key_one_time

        lda     keyno_next
        cmp     <keyno
        beq     ?xx
        jmp     scanf_key_no_key
?xx:
        dey
        bpl     ?scanf_key_next
        jsr     delay_xxxx
        rmb3    <eflag
;;==============================
;;      最后版本请删除这Debug程式
;;        lda     <drrh
;;        pha
;;        lda     <drrl
;;        pha
;;        lda     #>flash_prg_bank+6
;;        sta     <drrh
;;        lda     #<flash_prg_bank+6
;;        sta     <drrl
;;        lda     8000h
;;        cmp     #85h
;;        bne     ?skip_call_flash_prg
;;        lda     8004h
;;        cmp     #48h
;;        bne     ?skip_call_flash_prg
;?ookk:
;;        pla
;;        sta     <drrl
;;        pla
;;        sta     <drrh
        rts

;?skip_call_flash_prg:
;        lsetscreen_to_ds0 1
;        lprint  system_error
;        jsr     cdata_decide_updatescreen
;        rmb3    <eflag
;?x:
;        wai
;        bbr3    <eflag,?x
;        bra     ?ookk
;;==============================
scanf_key_one_time:
        sei
        stz     keyno_next
        ldx     #0ffh
?scanf_key_loop:
        inx
        cpx     #9
        bcs     ?scanf_key_no_key
        lda     ScanKeyTalx,x
        sta     <pb
        jsr     delay_xxxx
        lda     <pa
        cmp     #0ffh
        bne     ?paintxxx
        clc
        lda     keyno_next
        adc     #8
        sta     keyno_next
        bra     ?scanf_key_loop

?paintxxx:

        bbr0    <PA,kinc0       ;; Key press.
        bbr1    <PA,kinc1
        bbr2    <PA,kinc2
        bbr3    <PA,kinc3
        bbr4    <PA,kinc4
        bbr5    <PA,kinc5
        bbr6    <PA,kinc6
        bbr7    <PA,kinc7

?scanf_key_no_key:
scanf_key_no_key:
        lda     #nullkey
        sta     keyno_next
        sta     <keyno
        stz     <Pb             ;; Scan all key。
        rmb3    <EFlag          ;; 设定Key up事件处理旗号.

        jsr     delay_xxxx

        lda     <pa
        rmb4    <ireql
        cli
        jmp	jmp_LMAINU

kinc7:  inc     keyno_next
kinc6:  inc     keyno_next
kinc5:  inc     keyno_next
kinc4:  inc     keyno_next
kinc3:  inc     keyno_next
kinc2:  inc     keyno_next
kinc1:  inc     keyno_next
kinc0:

        stz     <pb             ;; Scan all key。
        jsr     delay_xxxx
        lda     <pa
        rmb4    <ireql

        cli
        rts

delay_xxxx:
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        rts

ScanKeyTalx:
        db      0ffh
        db      11111110b
        db      11111101b
        db      11111011b
        db      11110111b
        db      11101111b
        db      11011111b
        db      10111111b
        db      01111111b

JMP_lmainu:
	lmainu

CALL_LUPDATESCREEN:
	LUPDATESCREEN
	RTS

        end

⌨️ 快捷键说明

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