📄 cnvlcdclk.ms
字号:
; 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 1112, LineInfo
JP Init ; reset vector
.stabn 1113, LineInfo
JP IntRTC ; clock interrupt -- may only be used to set flag
;
.org 0x104
.stabn 1116, LineInfo
JP IntKPort ; Key port interrupt
; JP IntRTC_KPort ; timer and key port interrupt both
;
; All reset, clock and Key port interrupt should be located in 100H page
.org 0x110
;-------------------------------------
; Cate : System
; By : Hcy
; Func : check the interrupt timer 1/8 sec and 1/2 sec
; Desc : ChkTimer
; I/P : --
; O/P : --
; Destroy:
; Note :
ChkTimer:
.stabn 1132, LineInfo
ld x,(0x0EF)
.stabn 1133, LineInfo
ld a,mx ; read and clear any interrupt request flags
.stabn 1134, LineInfo
fan a,0b0010 ; chk 1/8 sec
.stabn 1135, LineInfo
jp z,TimeSet00
.stabn 1136, LineInfo
inc (M0) ; inc the keyhold time
.stabn 1137, LineInfo
call KeyScan
TimeSet00:
.stabn 1139, LineInfo
fan a,0b0100 ; chk 1/2 sec
.stabn 1140, LineInfo
jp z,TimeSet01
.stabn 1141, LineInfo
ld a,(M8)
.stabn 1142, LineInfo
fan a,0b1111
.stabn 1143, LineInfo
jp z,TimeR0
.stabn 1144, LineInfo
dec (M8)
.stabn 1145, LineInfo
jp TimeR1
; add by hcy 03-11-29 11:35
TimeR0:
.stabn 1148, LineInfo
ld X,(1)
.stabn 1149, LineInfo
AND MX,0x0f-(4) ; clr the key
TimeR1:
.stabn 1151, LineInfo
call ToggleHalfSecFlag
.stabn 1152, LineInfo
ld x,(0x16)
.stabn 1153, LineInfo
fan mx,(2)
TimeSet01:
.stabn 1155, LineInfo
jp z,TimeS0 ; br if just 0.5 sec
;
.stabn 1157, LineInfo
and mx,0x0f-(2) ; clear the bit
; update the clock per 1 min
;
.stabn 1161, LineInfo
calz IncSecond
.stabn 1162, LineInfo
jp nc,TimeS0 ; No display update if change in second only
.stabn 1163, LineInfo
calz IncMinute
.stabn 1164, LineInfo
jp nc,TimeS0
.stabn 1165, LineInfo
calz IncHour
TimeS0:
.stabn 1167, LineInfo
ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : toggle the half sec flag
; Desc : ToggleHalfSecFlag
; I/P : --
; O/P : --
; Destroy:
; Note :
ToggleHalfSecFlag:
.stabn 1179, LineInfo
ld x,(0x16)
.stabn 1180, LineInfo
xor mx,(1)
.stabn 1181, LineInfo
fan mx,(1)
.stabn 1182, LineInfo
jp nz,xToggleHalfS
.stabn 1183, LineInfo
or mx,(2) ; set flag if from 1->0
xToggleHalfS:
.stabn 1185, LineInfo
ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : inc setting HOUR
; Desc : IncSetHour
; I/P : --
; O/P : --
; Destroy:
; Note :
IncSetHour:
.stabn 1197, LineInfo
ld x,(0x1A)
.stabn 1198, LineInfo
calz IncByteD
.stabn 1199, LineInfo
ld x,(0x1A)
.stabn 1200, LineInfo
calz IsEqu24
.stabn 1201, LineInfo
jp nc,IncSet0
.stabn 1202, LineInfo
ld x,(0x1A)
.stabn 1203, LineInfo
call ClrByte
IncSet0:
.stabn 1205, LineInfo
ld y,(0x1a)
.stabn 1206, LineInfo
calz DspHour
.stabn 1207, LineInfo
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:
.stabn 1219, LineInfo
ld a,4
Copy0:
.stabn 1221, LineInfo
ld my,mx
.stabn 1222, LineInfo
inc x
.stabn 1223, LineInfo
inc y
.stabn 1224, LineInfo
add a,0x0f ; dec a
.stabn 1225, LineInfo
jp nz,Copy0
.stabn 1226, LineInfo
ret
;-------------------------------------
; Cate : communication
; By : Hcy
; Func : reload the communication variable
; Desc : ReloadCommVar
; I/P : --
; O/P : --
; Destroy:
; Note :
ReloadCommVar:
.stabn 1238, LineInfo
ld y,(0x1c)
.stabn 1239, LineInfo
ld my,0 ; clr the communication buffer
.stabn 1240, LineInfo
ld y,(0x17)
.stabn 1241, LineInfo
ld my,0x04 ; reload the communication bit counter
.stabn 1242, LineInfo
ret
;-------------------------------------
; Cate : communication
; By : Hcy
; Func : store to the receive buffer
; Desc : ToRecBuffer
; I/P : --
; O/P : --
; Destroy:
; Note :
ToRecBuffer:
.stabn 1253, LineInfo
ld y,(0x20)
.stabn 1254, LineInfo
ld x,(0x1d)
.stabn 1255, LineInfo
ld a,mx
Prog1:
.stabn 1257, LineInfo
ld YL,a
Prog2:
.stabn 1259, LineInfo
ld x,(0x1c)
.stabn 1260, LineInfo
ld my,mx ; store receive data to receive buffer
.stabn 1261, LineInfo
ret
;;-------------------------------------
; Cate : Display
; By : Kwan
; Func : Clear the LCD ram including digits/icons
; Desc :
; I/P :
; O/P :
; Destroy:
; Note :
LCDClr:
.stabn 1272, LineInfo
LD x,0x90
LCDClr0:
.stabn 1274, LineInfo
ldpx mx,0
.stabn 1275, LineInfo
cp xh,0x0b ; LCD ram from 90 to AFH
.stabn 1276, LineInfo
jp nz, LCDClr0
.stabn 1277, LineInfo
ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : inc setting minute
; Desc : IncSetMinute
; I/P : --
; O/P : --
; Destroy:
; Note :
IncSetMinute:
.stabn 1289, LineInfo
ld x,(0x18)
.stabn 1290, LineInfo
calz IncByteD
.stabn 1291, LineInfo
ld x,(0x18)
.stabn 1292, LineInfo
calz IsEqu60
.stabn 1293, LineInfo
ld y,(0x18)
.stabn 1294, LineInfo
calz DspMinute
.stabn 1295, LineInfo
ret
;-------------------------------------
; Cate : Application
; By : Hcy
; Func :
; Desc : CopyByte
; I/P : y(ram address)
; O/P :
; Destroy:
; Note :
CopyByte:
.stabn 1307, LineInfo
ld x,(0x32)
.stabn 1308, LineInfo
ld mx,my
.stabn 1309, LineInfo
inc y
.stabn 1310, LineInfo
inc x
.stabn 1311, LineInfo
ld mx,my ; ram --> dsphourbuf
.stabn 1312, LineInfo
ret
;-------------------------------------
; Cate : Application
; By : Hcy
; Func : -0ch by decimal
; Desc : Sub12D
; I/P : y(address of buffer)
; O/P :
; Destroy:
; Note :
Sub12D:
.stabn 1323, LineInfo
push yl
.stabn 1324, LineInfo
call CopyByte
.stabn 1325, LineInfo
pop yl
.stabn 1326, LineInfo
ld x,(0x32)
.stabn 1327, LineInfo
SET F,0b0100
.stabn 1328, LineInfo
RCF
.stabn 1329, LineInfo
sbc Mx,0x02
.stabn 1330, LineInfo
inc x
.stabn 1331, LineInfo
sbc Mx,0x01
.stabn 1332, LineInfo
RST F,0b1011
.stabn 1333, LineInfo
RET
;
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : is che memory equ 12h
; Desc : IsEqu24
; I/P : --
; O/P : --
; Destroy:
; Note :
IsEqu12:
.stabn 1346, LineInfo
cp my,0x02
.stabn 1347, LineInfo
jp z,IsEqu120
.stabn 1348, LineInfo
rcf
.stabn 1349, LineInfo
ret
IsEqu120:
.stabn 1352, LineInfo
push yl
.stabn 1353, LineInfo
inc y
.stabn 1354, LineInfo
cp my,0x01
.stabn 1355, LineInfo
pop yl
.stabn 1356, LineInfo
jp z,IsEqu121 ; jmp if 1 minute time out
.stabn 1357, LineInfo
rcf
.stabn 1358, LineInfo
ret
IsEqu121:
.stabn 1360, LineInfo
call CopyByte
.stabn 1361, LineInfo
scf
.stabn 1362, LineInfo
ret
;
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : is che memory equ 0
; Desc : IsEqu24
; I/P : --
; O/P : --
; Destroy:
; Note :
IsEquZero:
.stabn 1375, LineInfo
cp my,0
.stabn 1376, LineInfo
jp z,IsEqu00
.stabn 1377, LineInfo
rcf
.stabn 1378, LineInfo
ret
IsEqu00:
.stabn 1381, LineInfo
push yl
.stabn 1382, LineInfo
inc y
.stabn 1383, LineInfo
cp my,0
.stabn 1384, LineInfo
pop yl
.stabn 1385, LineInfo
jp z,IsEqu01 ; jmp if 1 minute time out
.stabn 1386, LineInfo
rcf
.stabn 1387, LineInfo
ret
IsEqu01:
.stabn 1389, LineInfo
ld x,(0x32)
.stabn 1390, LineInfo
ld a,0x02
.stabn 1391, LineInfo
ld mx,a
.stabn 1392, LineInfo
inc x
.stabn 1393, LineInfo
ld a,0x01
.stabn 1394, LineInfo
ld mx,a
.stabn 1395, LineInfo
scf
.stabn 1396, 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
; ADD b,0FH ; b-1
; jp nz,DspI0
; ; add by hcy 03-11-24 12:02
; ld y,RxIcon1
; fan my,0010b
; jp nz,DspI1
;
; calz DspColonOff
; ret
;DspI1:
; calz DspColonOn
; ret
;
SendKeyData:
.stabn 1431, LineInfo
ld x,(0x0E0)
.stabn 1432, LineInfo
fan mx,0b0100
.stabn 1433, LineInfo
jp nz,Send0 ; BR IF D_CLK is high
SendCalKey:
.stabn 1435, LineInfo
LD X,(0x0F3)
; LD MX,0001b ; D_out low
.stabn 1437, LineInfo
and mx,0b0001 ; D_out low
.stabn 1439, LineInfo
CALL SendKey
.stabn 1440, LineInfo
LD X,(0x16)
.stabn 1441, LineInfo
AND MX,0x0f-(4) ; clear the flag after sending
Send0:
.stabn 1443, LineInfo
RET
;
;-------------------------------------
; Cate : delay
; By : Hcy
; Func : delay 2.5s
; Desc : Dly250
; I/P : --
; O/P : --
; Destroy:
; Note :
Dly250:
.stabn 1455, LineInfo
ld y,0x0d8
Dly1:
.stabn 1457, LineInfo
call Dly125ms
.stabn 1458, LineInfo
inc y
.stabn 1459, LineInfo
cp yh,0x0f
.stabn 1460, LineInfo
jp nz,Dly1
.stabn 1461, LineInfo
ret
;-------------------------------------
; Cate : Delay
; By : Hcy
; Func : delay 125ms
; Desc : Dly125ms
; I/P : --
; O/P : --
; Destroy:
; Note :
;
;Dly125ms:
; ld x,0
;Dlym0:
; inc x
; cp xh,0fh
; jp nz,Dlym0
; ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : clear the byte
; Desc : ClrByte
; I/P : x(ram address)
; O/P : --
; Destroy:
; Note :
ClrByte:
.stabn 1490, LineInfo
ld a,0
.stabn 1491, LineInfo
ld mx,a
.stabn 1492, LineInfo
inc x
.stabn 1493, LineInfo
ld mx,a
.stabn 1494, LineInfo
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 0bh, c=0 if equal 1bh
IsEquStartCode:
.stabn 1506, LineInfo
ld y,(0x20)
.stabn 1507, LineInfo
cp my,0x0B
.stabn 1508, LineInfo
jp z,IsEquEE
.stabn 1509, LineInfo
scf
.stabn 1510, LineInfo
ret
IsEquEE:
.stabn 1512, LineInfo
rcf
.stabn 1513, LineInfo
ret
Init:
.stabn 1516, LineInfo
DI ; reset interrupt mask
.stabn 1517, LineInfo
RST F,0b0011
; LD A,0
; LD xp,a ; reset XP
; LD YP,A
.stabn 1522, LineInfo
LD A,0x0f ; define SP
.stabn 1523, LineInfo
LD B,0x04
.stabn 1524, LineInfo
LD SPL,A
.stabn 1525, LineInfo
LD SPH,B
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -