📄 kclock.ms
字号:
.stabn 466, LineInfo
calz DspPattern1 ; display ' ' in 5th digit
.stabn 467, LineInfo
calz DspPattern1 ; display ' ' in 6th digit
.stabn 468, LineInfo
ret
;-------------------------------------
; Cate : Display
; By : Hcy
; Func : display the weight from the samsung
; Desc : DspWeight
; I/P : --
; O/P : --
; Destroy:
; Note :
DspWeight:
.stabn 480, LineInfo
ld y,(0x27)
.stabn 481, LineInfo
ld x,0x090
.stabn 482, LineInfo
ld b,4
DspW0:
.stabn 484, LineInfo
ld a,my
.stabn 485, LineInfo
push b
.stabn 486, LineInfo
ld b,a
.stabn 487, LineInfo
inc y
.stabn 488, LineInfo
fan my,0x0f
.stabn 489, LineInfo
jp nz,DspW1
.stabn 490, LineInfo
ld a,b
.stabn 491, LineInfo
calz DspDigit
.stabn 492, LineInfo
jp DspW2
DspW1:
.stabn 494, LineInfo
ld a,b
.stabn 495, LineInfo
calz DspDigit1
DspW2:
.stabn 497, LineInfo
ld b,YL
.stabn 498, LineInfo
rcf
.stabn 499, LineInfo
sbc b,3 ; get next digit
.stabn 500, LineInfo
ld YL,b
.stabn 501, LineInfo
pop b
.stabn 502, LineInfo
ADD b,0x0F ;
.stabn 503, LineInfo
jp nz,DspW0
.stabn 504, LineInfo
ret
;-------------------------------------
; Cate : Display
; By : Hcy
; Func : display the icons from the samsung
; Desc : DspIcons
; I/P : --
; O/P : --
; Destroy:
; Note :
;DspIcons:
; ld y,RxIcon0
; ld x,09ch
; ld b,4
;DspI0:
; ld mx,my
; inc y
; inc x
;; rcf
;; sbc b,1 ; get next digit
; ADD b,0FH ;
; jp nz,DspI0
; ret
;---------------------------------------
;---------------------------------------
; calculate the clock
;---------------------------------------
;---------------------------------------
;-------------------------------------
; Cate : Application
; By : Hcy
; Func : increase byte by decimal
; Desc : IncByteD
; I/P : X(address of buffer)
; O/P :
; Destroy:
; Note :
IncByteD:
.stabn 544, LineInfo
SET F,0b0100
.stabn 545, LineInfo
RCF
.stabn 546, LineInfo
ADD MX,0x01
.stabn 547, LineInfo
inc x
.stabn 548, LineInfo
ADC MX,0x00
.stabn 549, LineInfo
RST F,0b1011
.stabn 550, LineInfo
RET
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : toggle the half sec flag
; Desc : ToggleHalfSecFlag
; I/P : --
; O/P : --
; Destroy:
; Note :
;ToggleHalfSecFlag:
; ld x,AppFlags
; xor mx,HalfSecFlag
; fan mx,HalfSecFlag
; jp nz,xToggleHalfS
; or mx,SecClickFlag ; set flag if from 1->0
;xToggleHalfS:
; ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : check if up to 1 minute
; Desc : IncSecond
; I/P : --
; O/P : --
; Destroy:
; Note : c=0 if not up to 1 minute, c=1 if up to 1 minute
IncSecond:
.stabn 580, LineInfo
ld x,(0x10)
.stabn 581, LineInfo
calz IncByteD
.stabn 582, LineInfo
ld x,(0x10)
.stabn 583, LineInfo
calz IsEqu60
.stabn 584, LineInfo
ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : is che memory equ 60h
; Desc : IsEqu60
; I/P : --
; O/P : --
; Destroy:
; Note :
IsEqu60:
.stabn 596, LineInfo
cp mx,0x00
.stabn 597, LineInfo
jp z,IsEqu0
; rcf
; ret
; jp IsEqu2
.stabn 601, LineInfo
jp IsRight8
IsEqu0:
.stabn 603, LineInfo
inc x
.stabn 604, LineInfo
cp mx,0x06
.stabn 605, LineInfo
jp z,IsEqu1 ; jmp if 1 minute time out
IsRight8:
.stabn 607, LineInfo
rcf
.stabn 608, LineInfo
ret
IsEqu1:
.stabn 610, LineInfo
ld mx,0 ; clr the memory
IsEquE:
.stabn 612, LineInfo
scf
.stabn 613, LineInfo
ret
;
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : is che memory equ 24h
; Desc : IsEqu24
; I/P : --
; O/P : --
; Destroy:
; Note :
IsEqu24:
.stabn 626, LineInfo
cp mx,0x04
.stabn 627, LineInfo
jp z,IsEqu240
.stabn 628, LineInfo
jp IsRight8
IsEqu240:
.stabn 630, LineInfo
push xl
.stabn 631, LineInfo
inc x
.stabn 632, LineInfo
cp mx,0x02
.stabn 633, LineInfo
pop xl
.stabn 634, LineInfo
jp z,IsEqu241 ; jmp if 1 minute time out
.stabn 635, LineInfo
jp IsRight8
IsEqu241:
.stabn 637, LineInfo
ldpx mx,0
.stabn 638, LineInfo
ld mx,0
.stabn 639, LineInfo
jp IsEquE
FlashTimeFormat:
.stabn 642, LineInfo
ld x,(0x16)
.stabn 643, LineInfo
FAN mx,(1)
.stabn 644, LineInfo
Jp z,DspHourOff
;-------------------------------------
; Cate : display
; By : Hcy
; Func : display '24:H' or '12:H'
; Desc : DspTimeFormat
; I/P : --
; O/P : --
; Destroy:
; Note :
DspTimeFormat:
.stabn 655, LineInfo
ld x,(1)
.stabn 656, LineInfo
fan mx,(8)
.stabn 657, LineInfo
jp nz,DspTime0 ; jmp if 24 hour
.stabn 658, LineInfo
ld a,1
.stabn 659, LineInfo
ld x,0x090
.stabn 660, LineInfo
calz DspPattern
.stabn 661, LineInfo
ld a,2
.stabn 662, LineInfo
calz DspPattern
.stabn 663, LineInfo
jp DspTime1
DspTime0:
.stabn 665, LineInfo
ld a,2
.stabn 666, LineInfo
ld x,0x090
.stabn 667, LineInfo
calz DspPattern
.stabn 668, LineInfo
ld a,4
.stabn 669, LineInfo
calz DspPattern
DspTime1:
.stabn 671, LineInfo
ld a,0
.stabn 672, LineInfo
calz DspPattern1 ; display 'H'
.stabn 673, LineInfo
ld a,7
.stabn 674, LineInfo
calz DspPattern1 ; display ' '
.stabn 675, LineInfo
jp DspColonOn
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : check if up to 1 hour
; Desc : IncMinute
; I/P : --
; O/P : --
; Destroy:
; Note : c=0 if not up to 1 minute, c=1 if up to 1 minute
IncMinute:
.stabn 686, LineInfo
ld x,(0x12)
.stabn 687, LineInfo
calz IncByteD
.stabn 688, LineInfo
ld x,(0x12)
.stabn 689, LineInfo
calz IsEqu60
.stabn 690, LineInfo
ret
;
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : check if up to 1 hour
; Desc : IncHour
; I/P : --
; O/P : --
; Destroy:
; Note : c=0 if not up to 24 hour, c=1 if up to 24 hour
IncHour:
.stabn 702, LineInfo
ld x,(0x14)
.stabn 703, LineInfo
calz IncByteD
.stabn 704, LineInfo
ld x,(0x14)
.stabn 705, LineInfo
calz IsEqu24
.stabn 706, LineInfo
ret
;
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : clear the byte
; Desc : ClrByte
; I/P : x(ram address)
; O/P : --
; Destroy:
; Note :
;ClrByte:
; ld a,0
; ld mx,a
; inc x
; ld mx,a
; ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : inc setting HOUR
; Desc : IncSetHour
; I/P : --
; O/P : --
; Destroy:
; Note :
;IncSetHour:
; ld x,TmpRTCHour
; calz IncByteD
; ld x,TmpRTCHour
; calz IsEqu24
; jp nc,IncSet0
; ld x,TmpRTCHour
; calz ClrByte
;IncSet0:
; ld y,TmpRTCHourL
; calz DspHour
; ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : inc setting minute
; Desc : IncSetMinute
; I/P : --
; O/P : --
; Destroy:
; Note :
;IncSetMinute:
; ld x,TmpRTCMinute
; calz IncByteD
; ld x,TmpRTCMinute
; calz IsEqu60
; ld y,TmpRTCMinuteL
; calz DspMinute
; ret
;-------------------------------------
; Cate : Common
; By : Hcy
; Func : copy 2-byte to other memory, (buffer1) --> (buffer2)
; Desc : Copy2Byte
; I/P : x(buffer 1 low address), y(buffer 2 low address)
; O/P :
; Destroy:
; Note :
;Copy2Byte:
; ld a,4
;Copy0:
; ld my,mx
; inc x
; inc y
; add a,0fh ; dec a
; jp nz,Copy0
; ret
;---------------------------------------
;---------------------------------------
; Communication Routine
;---------------------------------------
;---------------------------------------
;-------------------------------------
; Cate : communication
; By : Hcy
; Func : reload the communication variable
; Desc : ReloadCommVar
; I/P : --
; O/P : --
; Destroy:
; Note :
;ReloadCommVar:
; ld y,CommBufferL
; ld my,0 ; clr the communication buffer
; ld y,CommCount
; ld my,04h ; reload the communication bit counter
; ret
;-------------------------------------
; Cate : communication
; By : Hcy
; Func : store to the receive buffer
; Desc : ToRecBuffer
; I/P : --
; O/P : --
; Destroy:
; Note :
;ToRecBuffer:
; ld y,RxStartBufL
; ld x,RxNibbleCnt
; ld a,mx
;Prog1:
; ld YL,a
;Prog2:
; ld x,CommBufferL
; ld my,mx ; store receive data to receive buffer
; ret
;-------------------------------------
; Cate : communication
; By : Hcy
; Func : is che memory equ 1bh
; Desc : IsEquStartCode
; I/P : Y(start code address)
; O/P : --
; Destroy:
; Note : c=1 if not equal 1bh, c=0 if equal 1bh
;IsEquStartCode:
; ld y,RxStartBufL
; cp my,0Bh
; jp z,IsEquEE
;IsEquE:
; scf
; ret
;IsEquEE:
; rcf
; ret
;-------------------------------------
; Cate : communication
; By : Hcy
; Func : is receive command right ?
; Desc : IsRightCmd
; I/P : --
; O/P : --
; Destroy:
; Note : c=1 if undefined command, c=0 if defined command
;IsRightCmd:
; ld x,RxCommand
; cp mx,SHOWLDIGITCMD
; jp nz,IsRight0
; ; show Ldigit command
; ld x,SumNumRxNibble
; ld mx,0ch
; jp IsRight8
;IsRight0:
; cp mx,SHOWSDIGITCMD
; jp nz,IsRight1
; ; show Sdigit command
; ld x,SumNumRxNibble
; ld mx,1
;IsRight8:
; rcf
; ret
;IsRight1:
; cp mx,SHOWICONCMD
; jp nz,IsRight2
; ; show icon command
; ld x,SumNumRxNibble
; ld mx,4
; ld x,RxNibbleCnt
; ld mx,0ch ;
; jp IsRight8
;IsRight2:
; cp mx,SHOWMSGCMD
; jp nz,IsEquE
; ; show msg command
; jp IsRight8
;;-------------------------------------
; Cate : Display
; By : Kwan
; Func : Clear the LCD ram including digits/icons
; Desc :
; I/P :
; O/P :
; Destroy:
; Note :
;LCDClr:
; LD x,90h
;LCDClr0:
; ldpx mx,0
; cp xh,0bh ; LCD ram from 90 to AFH
; jp nz, LCDClr0
; ret
;
;;-------------------------------------
; Cate : KeyBoard
; By : Kwan
; Func : Key board scan, set NewKey flag if new key found
; set keyhold flag if the new key is still in-held
; Desc :
; I/P :
; O/P :
; Destroy:
; Note : After calling subr, the newkey flag should be
; checked.
; For MaB key, the Keyholdkey should be cleared before
; activating the corresponding function
; For MbB key, no need to check the KeyHoldFlag before
; activating the corr. function
; For MaH, the hold time must be checked to be 255 before
; activating the corr. function.
;
;KeyScan:
; ld b,Key_On
; ld x,KPort
; fan mx,IO_Key_On
; jp z,KeyFound0 ; br if Key_on is preseed (=1)
; call Dly17ms
; fan mx,IO_Key_On
; jp nz,KeyFound
;KeyFound0:
; ld b,Key_Off
; fan mx,IO_Key_Off
; jp z,KeyFound1 ; br if Key_off is preseed
; call Dly17ms
; fan mx,IO_Key_Off
; jp nz,KeyFound
;;
;KeyFound1:
; ld b,Key_Kg
; ld x,PPort
; fan mx,IO_Key_Kg
; jp nz,KeyFound2 ; br if Key_Kg is preseed
; call Dly17ms
; fan mx,IO_Key_Kg
; jp nz,KeyFound
;;
;KeyFound2:
; ld b,Key_ml
; fan mx,IO_Key_ml
; jp nz,KeyFound3 ; br if Key_ml is preseed
; call Dly17ms
; fan mx,IO_Key_ml
; jp nz,KeyFound
;;
;KeyFound3:
; LD X,RegKeyFlags
; AND MX, 0fh-KeyHoldFlag
;NotNewKey:
; RZF ; return with Z=0
; RET
;KeyFound:
; LD X,RegKeyFlags
; FAN MX,KeyHoldFlag
; JP nz,NotNewKey ; br if not new Key
; OR MX,NewKeyFlag+KeyHoldFlag ; set key flag
; LD KeyCode,B
; SZF ; return with Z-1 if new key MbB
; RET
;===============================================
; Reset vectors are located at page 1
.org 0x100
.stabn 970, LineInfo
JP Init ; reset vector
.stabn 971, LineInfo
JP IntRTC ; clock interrupt -- may only be used to set flag
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -