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

📄 test.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 3 页
字号:
        sta     <T1M            ;; and set to auto reload.

        lda     #256-3             ;; 6 * 976.6 = 5860uS.
        sta     <T1C            ;; One times.

csc3:   bbr3    <IREQ,csc3
        rmb3    <IREQ           ;; Clear Timer 1 over flag.
        sed                     ;; Sed to decimal operation mode.

csc5:
        bbs3    <IREQ,csc8      ;; '5 ------+
        sec                     ;; '2       |
        lda     OSCFreq         ;; '4       |
        adc     #0              ;; '2       +-- '27
        sta     <OSCFreq        ;; '3       |
        lda     <OSCFreq+1      ;; '3       |
        adc     #0              ;; '2       |
        sta     <OSCFreq+1      ;; '3       |
;;      bcc     csc5            ;; '3 ------+
        nop
        sta     <OSCFreq+1  ;;凑时间

        bbs3    <IREQ,csc8      ;; '5 ------+
        nop                     ;; '2       |
        lda     OSCFreq         ;; '4       |
        nop                     ;; '2       +-- '27
        sta     <OSCFreq        ;; '3       |
        lda     <OSCFreq+1      ;; '3       |
        nop                     ;; '2       |
        sta     <OSCFreq+1      ;; '3       |
        bcc     csc5            ;; '3 ------+

csc8:   stz     <T1M            ;;
        rmb3    <IREQ           ;; Clear Timer 1 over flag.
        rmb3    <IENAB          ;; Disable timer 1 interrupt.
        lda     <IENAB
        sta     <IENA

;;      sec                     ;; OSCFreq - 1%.
;;      lda     <OSCFreq
;;      sbc     <OSCFreq+1
;;      sta     <OSCFreq
;;      lda     <OSCFreq+1
;;      sbc     #0
;;      sta     <OSCFreq+1

        cld                     ;; Clear decimal operation mode.
        cli                     ;; Enable all interrupt.
        rts

;;=====================================================
RomChkSum:
        lprint  rom_testing
        jsr	CALL_LUpdateScreen
        cld
        LSetScreen_to_ds0 1
        LPrint  RomTestMsg
;;=====================================================
        jsr     ljsr
        dw      biosbank
        dw      clear_flash_buffer-1
;        lda     #>flash_prg_bank
;        sta     <DRRh
;        lda     #<flash_prg_bank
;        sta     <DRRl
;        lda     #87h
;        sta     <drr_max_ram
;        jsr     sum_init_and_checksum

;        ldx     <CheckSum2
;        la2xy
;        stx     TextBuffor+7+24
;        sty     TextBuffor+8+24
;        ldx     <CheckSum1
;        la2xy
;        stx     TextBuffor+9+24
;        sty     TextBuffor+10+24
;;===============================================
;;===============================================
        lda     #>flash_prg_bank
        sta     <DRRh
        lda     #<flash_prg_bank
        sta     <DRRl
        lda     #90h
        sta     <drr_max_ram
        jsr     sum_init_and_checksum

        ldx     <CheckSum2
        la2xy
        stx     TextBuffor+7+44
        sty     TextBuffor+8+44
        ldx     <CheckSum1
        la2xy
        stx     TextBuffor+9+44
        sty     TextBuffor+10+44
;;===============================================
;;===============================================
        stz     <DRRh
        stz     <DRRl
        lda     #8
        sta     <drr_max_ram
        jsr     sum_init_and_checksum

        ldx     <CheckSum2
        la2xy
        stx     TextBuffor+27+44
        sty     TextBuffor+28+44
        ldx     <CheckSum1
        la2xy
        stx     TextBuffor+29+44
        sty     TextBuffor+30+44

        jsr     sum_init
?1:
        lda     #01h
        sta     <drrh
        stz     <drrl
;;      lda     #80h
;;      bbr0    <sf1,?5000_rom
;;      lda     #0
?5000_rom:
;;      sta     <drr_max_ram
        stz     <drr_max_ram

        jsr     count_checksum
;;      lda     #01h
;;      sta     <drrh
;;      lda     #40h
;;      sta     <drr_max_ram
;;      jsr     count_checksum

        ldx     <CheckSum2
        la2xy
        stx     TextBuffor+47+44
        sty     TextBuffor+48+44
        ldx     <CheckSum1
        la2xy
        stx     TextBuffor+49+44
        sty     TextBuffor+50+44

        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      GraphBank
        dw      Melody-1
        jmp     ExitWithU

RamTesting:
        lda     #2
        sta     <INDH
        stz     <INDL

RamTesting2:
        lda     #0ffh
        sta     (<IND)
        lda     (<IND)
        cmp     #0ffh
        bne     RamTesting0
        lda     #0
        sta     (<IND)
        lda     (<IND)
        bne     RamTesting0
        inc     <INDL
        bne     RamTesting2
        inc     <INDH
        lda     <INDH
        cmp     #10h
        bcc     RamTesting2
        LCls
        LSetCur 5,1
        LPrint  RamTestMsg
        LSetCur 8,3
        LPrint  ramokmsg
        bra     EndRamTest
RamTesting0:
        LCls
        LSetCur 5,1
        LPrint  RamTestMsg
        LSetCur 4,3
        LPrint  ramerrormsg
EndRamTest:
        cli
        rts

sum_init:
        stz     <CheckSum1
        stz     <CheckSum2
        stz     <CheckSum3
        stz     <CheckSum4
        rts

sum_init_and_checksum:
        jsr     sum_init
count_checksum:
        lda     #80h
        sta     <INSH
        stz     <INSL

?VerFlashData:
        lda     (<INS)
        clc
        adc     <CheckSum1
        sta     <CheckSum1
        bcc     ?xx
        lda     <CheckSum2
        adc     #0
        sta     <CheckSum2
;       bcc     ?xx
;       lda     <CheckSum3
;       adc     #0
;       sta     <CheckSum3
;       bcc     ?xx
;       lda     <CheckSum4
;       adc     #0
;       sta     <CheckSum4
?xx:
        inc     <INSL
        bne     ?VerFlashData
        inc     <INSH
        bne     ?VerFlashData
        inc     <DRR
        lda     #80h
        sta     <INSH
        lda     <DRR
        cmp     <drr_max_ram
        bne     ?VerFlashData
        rts

half_sec_invert_screen:
        lda     #09h
        sta     <test_temp
?1:     rmb1    <eflag
        bbr1    <eflag,$
        stz     <OX
        stz     <OY
        LBlockInvert    159,80
        dec     <test_temp
        bpl     ?1
        rts

lcd_go_2_times:
        lda     #4
        sta     <test_temp
?3:
        dec     <test_temp
        bpl     ?4
        rts
?4:
        bbr0    <test_temp,?5
        LSetScreen_to_ds0 1
        lprint  lcd_screen
        jsr	CALL_LUpdateScreen
?5:
        stz     <ox
        stz     <oy
?2:
        bbr0    <test_temp,?off_dot
        LoPrintImage   block_1x1
        bra     ?ox_inc
?off_dot:
        LoClrImage   block_1x1
?ox_inc:
        lda     #0
?delay:
        inc
        nop
        bne     ?delay
        inc     <ox
        lda     <ox
        cmp     #160
        bne     ?2
        stz     <ox
        inc     <oy
        lda     <oy
        cmp     #80
        bcs     ?3
        bra     ?2

test_all_icon:
        LSetScreen_to_ds0 1
        lprint  lcdtest_icon
        jsr	CALL_LUpdateScreen
        lclear_all_icon
        lda     #01h
        sta     table_icon_ram_address
        jsr     display_icon_1_time
        lclear_all_icon
        lda     #01h
        sta     table_icon_ram_address
        jsr     display_icon_1_time
        rts

display_icon_1_time:
        lupdate_all_icon_in_test
        rmb1    <eflag
        bbr1    <eflag,$
        jsr     icon_left_shift
        bbs0    <sf1,?xxx
        lda     IconAlarm>>8
        and     #<IconAlarm
        beq     display_icon_1_time
        rts
?xxx:
        lda     lcd_icona_0>>8
        and     #<lcd_icona_0
        beq     display_icon_1_time
        rts

icon_left_shift:
?2:
        ldx     #1
        asl     table_icon_ram_address
?1:
        rol     table_icon_ram_address,x
        php
        inx
        cpx     #4
        bcs     ?3
        plp
        bra     ?1
?3:
        plp
        rts

;=====================================================
prr_to_drr:
        lda     <image_addrh
        clc
        adc     #40h
        sta     <image_addrh

        lda     <prrh
        lsr
        sta     <drrh
        lda     <prrl
        ror
        sta     <DRRl
        bcs     ?1111111_111111
        lda     <image_addrh
        adc     #40h
        sta     <image_addrh
?1111111_111111:
        rts

;============================================================================
lowbat_test:
        smb0    <sys
        lda     #10h
?1:
        dec
        bne     ?1
        sec
        rmb3    <sysf
        bbs0    <sys,$+3
        bbs0    <sys,?normal_voltage
?low_voltage:
        smb3    <sysf
        clc
?normal_voltage:
        rmb0    <sys
        rts

LowBatDetect:
        lread_key_again
;*********************************************************
        lda	<KeyNo
        cmp	#HelpKey
        bne	BatIsHight
        ;HelpKey is pressed
        lda     <HelpOffset
        cmp     #NullHelp-HelpTable
        bne     ?HaveHelp
?Is_In_Help:
        rmb3	<EFlag
        jmp	jmp_LMAINU           ;; Branch if null help.
?HaveHelp:
        lda     #HelpMode
        cmp     <Mode
        beq     ?Is_In_Help
        ldx     <Mode
        stx     <SaveHelp
        sta     <Mode           ;; Set mode register。
        lkeytone
        bbs4    <soundflag,$
        ;lSoundOff        ;; Turn off all sound.
        lda     #10000000b         ;; Set mode entry event flag.
        sta     <EFlag             ;; Clear all event flag.
        lda     #0ffh
        sta     event_kill
        jmp	jmp_LMAINU
;*********************************************************
;;;        bbs4    <soundflag,$

;;;        jsr     lowbat_test
;;;        bcs     BatIsHight
;;;
;;;        LSetScreen_to_ds0   1
;;;        Lprint  LowBatMs_inf
;;;        jsr	CALL_LUpdateScreen
;;;
;;;        lda      #3
;;;        rmb3    <EFlag
;;;WaitKey:
;;;        bbr1    <EFlag,?1
;;;        rmb1    <eflag
;;;        dec
;;;        bne     ?1
;;;        rts
;;;?1:
;;;        bbr3    <EFlag,WaitKey
;;;        rmb3    <EFlag
;;;
BatIsHight:
        rts

;;==================================
;;关机缺陷在这里修改:
EntPowOff_process:
        sei
        ldx     #0ffh
        txs
        cli
        LPOWEROFF_BUG

;;;;;;;;        lSoundOff
;;;;;;;;        lSetTimer  0     ;; Stop timer .
;;;;;;;;;; Random generation off.
;;;;;;;;        lRandomOff
;;;;;;;;;; Stop scanf
;;;;;;;;        LExitScanF              ;;
;;;;;;;;;; Sound off.
;;;;;;;;        sei                     ;; Disable all interrupt.
;;;;;;;;        lda     #0ffh
;;;;;;;;        sta     event_kill
;;;;;;;;        rmb6    <SysF           ;; Clear power off event flag.
;;;;;;;;
;;;;;;;;        lda     <EFlag          ;; Remain HSEC , SEC , Minute event flag.
;;;;;;;;        and     #00000111b      ;;
;;;;;;;;        sta     <EFlag          ;;
;;;;;;;;
;;;;;;;;        smb7    <SysF           ;; Set Power off flag.
;;;;;;;;;;      rmb7    <SysOpt         ;; Set Power off flag.
;;;;;;;;
;;;;;;;;
;;;;;;;;        lda     #00110000b      ;; Interrupt enable flag.
;;;;;;;;        sta     <IENAB
;;;;;;;;        sta     <IENA           ;; (5) Enable Base timer interrupt.
;;;;;;;;                                ;; (4) Enable Port-A interrupt.
;;;;;;;;                                ;; (3) Disable Timer 1 interrupt.
;;;;;;;;                                ;; (2) Disable Timer 0 interrupt.
;;;;;;;;                                ;; (1) Disable DAC reload interrupt.
;;;;;;;;                                ;; (0) Disable INTX interrupt.
;;;;;;;;
;;;;;;;;        smb7    <KeyNo          ;; PreSet key off state.
;;;;;;;;        jsr     ljsr
;;;;;;;;        dw      biosbank
;;;;;;;;        dw      setio-1
;;;;;;;;        smb7    <pd
;;;;;;;;

⌨️ 快捷键说明

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