📄 01lcdclk.ms
字号:
; 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 1105, LineInfo
JP Init ; reset vector
.stabn 1106, LineInfo
JP IntRTC ; clock interrupt -- may only be used to set flag
;
.org 0x104
.stabn 1109, 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 1125, LineInfo
ld x,(0x0EF)
.stabn 1126, LineInfo
ld a,mx ; read and clear any interrupt request flags
.stabn 1127, LineInfo
fan a,0b0010 ; chk 1/8 sec
.stabn 1128, LineInfo
jp z,TimeSet00
.stabn 1129, LineInfo
ld b,(M3)
.stabn 1130, LineInfo
cp b,(0b1011)
.stabn 1131, LineInfo
jp nz,TimeN0
.stabn 1132, LineInfo
inc (M0) ; inc the keyhold time
TimeN0:
.stabn 1134, LineInfo
call KeyScan
TimeSet00:
.stabn 1136, LineInfo
fan a,0b0100 ; chk 1/2 sec
.stabn 1137, LineInfo
jp z,TimeSet01
.stabn 1138, LineInfo
ld a,(M8)
.stabn 1139, LineInfo
fan a,0b1111
.stabn 1140, LineInfo
jp z,TimeR0
.stabn 1141, LineInfo
dec (M8)
.stabn 1142, LineInfo
jp TimeR1
; add by hcy 03-11-29 11:35
TimeR0:
.stabn 1145, LineInfo
ld X,(1)
.stabn 1146, LineInfo
AND MX,0x0f-(4) ; clr the key
TimeR1:
.stabn 1148, LineInfo
call ToggleHalfSecFlag
.stabn 1149, LineInfo
ld x,(0x16)
.stabn 1150, LineInfo
fan mx,(2)
TimeSet01:
.stabn 1152, LineInfo
jp z,TimeS0 ; br if just 0.5 sec
;
.stabn 1154, LineInfo
and mx,0x0f-(2) ; clear the bit
; update the clock per 1 min
;
; add it by hcy for return to the view clock within 30s without key
; remove it by hcy 03-12-15 16:12 for auto off timer -->2 minutes
; ld a,Tmr15s
; fan a,1111b
; jp z,NewTime0
; dec Tmr15s ; dec timer 30s
.stabn 1164, LineInfo
calz IncSecond
.stabn 1165, LineInfo
jp nc,TimeS0 ; No display update if change in second only
; modify it by hcy
.stabn 1167, LineInfo
ld a,(M5)
.stabn 1168, LineInfo
fan a,0b1111
.stabn 1169, LineInfo
jp z,NewTime0
.stabn 1170, LineInfo
dec (M5)
NewTime0:
.stabn 1172, LineInfo
calz IncMinute
.stabn 1173, LineInfo
jp nc,TimeS0
.stabn 1174, LineInfo
calz IncHour
TimeS0:
.stabn 1176, LineInfo
ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : toggle the half sec flag
; Desc : ToggleHalfSecFlag
; I/P : --
; O/P : --
; Destroy:
; Note :
ToggleHalfSecFlag:
.stabn 1188, LineInfo
ld x,(0x16)
.stabn 1189, LineInfo
xor mx,(1)
.stabn 1190, LineInfo
fan mx,(1)
.stabn 1191, LineInfo
jp nz,xToggleHalfS
.stabn 1192, LineInfo
or mx,(2) ; set flag if from 1->0
xToggleHalfS:
.stabn 1194, LineInfo
ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : inc setting HOUR
; Desc : IncSetHour
; I/P : --
; O/P : --
; Destroy:
; Note :
IncSetHour:
.stabn 1206, LineInfo
ld x,(0x1A)
.stabn 1207, LineInfo
calz IncByteD
.stabn 1208, LineInfo
ld x,(0x1A)
.stabn 1209, LineInfo
calz IsEqu24
.stabn 1210, LineInfo
jp nc,IncSet0
.stabn 1211, LineInfo
ld x,(0x1A)
.stabn 1212, LineInfo
call ClrByte
IncSet0:
.stabn 1214, LineInfo
ld y,(0x1a)
.stabn 1215, LineInfo
calz DspHour
.stabn 1216, 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:
; ld a,4
;Copy0:
; ld my,mx
; inc x
; inc y
; add a,0fh ; dec a
; jp nz,Copy0
; ret
;-------------------------------------
; Cate : communication
; By : Hcy
; Func : reload the communication variable
; Desc : ReloadCommVar
; I/P : --
; O/P : --
; Destroy:
; Note :
ReloadCommVar:
.stabn 1247, LineInfo
ld y,(0x1c)
.stabn 1248, LineInfo
ld my,0 ; clr the communication buffer
.stabn 1249, LineInfo
ld y,(0x17)
.stabn 1250, LineInfo
ld my,0x04 ; reload the communication bit counter
.stabn 1251, LineInfo
ret
;-------------------------------------
; Cate : communication
; By : Hcy
; Func : store to the receive buffer
; Desc : ToRecBuffer
; I/P : --
; O/P : --
; Destroy:
; Note :
ToRecBuffer:
.stabn 1262, LineInfo
ld y,(0x20)
.stabn 1263, LineInfo
ld x,(0x1d)
.stabn 1264, LineInfo
ld a,mx
Prog1:
.stabn 1266, LineInfo
ld YL,a
Prog2:
.stabn 1268, LineInfo
ld x,(0x1c)
.stabn 1269, LineInfo
ld my,mx ; store receive data to receive buffer
.stabn 1270, LineInfo
ret
;;-------------------------------------
; Cate : Display
; By : Kwan
; Func : Clear the LCD ram including digits/icons
; Desc :
; I/P :
; O/P :
; Destroy:
; Note :
LCDClr:
.stabn 1281, LineInfo
LD x,0x90
LCDClr0:
.stabn 1283, LineInfo
ldpx mx,0
.stabn 1284, LineInfo
cp xh,0x0b ; LCD ram from 90 to AFH
.stabn 1285, LineInfo
jp nz, LCDClr0
.stabn 1286, LineInfo
ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : inc setting minute
; Desc : IncSetMinute
; I/P : --
; O/P : --
; Destroy:
; Note :
IncSetMinute:
.stabn 1298, LineInfo
ld x,(0x18)
.stabn 1299, LineInfo
calz IncByteD
.stabn 1300, LineInfo
ld x,(0x18)
.stabn 1301, LineInfo
calz IsEqu60
.stabn 1302, LineInfo
ld y,(0x18)
.stabn 1303, LineInfo
calz DspMinute
.stabn 1304, LineInfo
ret
;-------------------------------------
; Cate : Application
; By : Hcy
; Func :
; Desc : CopyByte
; I/P : y(ram address)
; O/P :
; Destroy:
; Note :
CopyByte:
.stabn 1316, LineInfo
ld x,(0x32)
.stabn 1317, LineInfo
ld mx,my
.stabn 1318, LineInfo
inc y
.stabn 1319, LineInfo
inc x
.stabn 1320, LineInfo
ld mx,my ; ram --> dsphourbuf
.stabn 1321, LineInfo
ret
;-------------------------------------
; Cate : Application
; By : Hcy
; Func : -0ch by decimal
; Desc : Sub12D
; I/P : y(address of buffer)
; O/P :
; Destroy:
; Note :
Sub12D:
.stabn 1332, LineInfo
push yl
.stabn 1333, LineInfo
call CopyByte
.stabn 1334, LineInfo
pop yl
.stabn 1335, LineInfo
ld x,(0x32)
; SET F,0100B
.stabn 1337, LineInfo
SDF
.stabn 1338, LineInfo
RCF
.stabn 1339, LineInfo
sbc Mx,0x02
.stabn 1340, LineInfo
inc x
.stabn 1341, LineInfo
sbc Mx,0x01
; RST F,1011B
.stabn 1343, LineInfo
RDF
.stabn 1344, LineInfo
RET
;
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : is che memory equ 12h
; Desc : IsEqu24
; I/P : --
; O/P : --
; Destroy:
; Note :
IsEqu12:
.stabn 1357, LineInfo
cp my,0x02
.stabn 1358, LineInfo
jp z,IsEqu120
.stabn 1359, LineInfo
rcf
.stabn 1360, LineInfo
ret
IsEqu120:
.stabn 1363, LineInfo
push yl
.stabn 1364, LineInfo
inc y
.stabn 1365, LineInfo
cp my,0x01
.stabn 1366, LineInfo
pop yl
.stabn 1367, LineInfo
jp z,IsEqu121 ; jmp if 1 minute time out
.stabn 1368, LineInfo
rcf
.stabn 1369, LineInfo
ret
IsEqu121:
.stabn 1371, LineInfo
call CopyByte
.stabn 1372, LineInfo
scf
.stabn 1373, LineInfo
ret
;
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : is che memory equ 0
; Desc : IsEqu24
; I/P : --
; O/P : --
; Destroy:
; Note :
IsEquZero:
.stabn 1386, LineInfo
cp my,0
.stabn 1387, LineInfo
jp z,IsEqu00
.stabn 1388, LineInfo
rcf
.stabn 1389, LineInfo
ret
IsEqu00:
.stabn 1392, LineInfo
push yl
.stabn 1393, LineInfo
inc y
.stabn 1394, LineInfo
cp my,0
.stabn 1395, LineInfo
pop yl
.stabn 1396, LineInfo
jp z,IsEqu01 ; jmp if 1 minute time out
.stabn 1397, LineInfo
rcf
.stabn 1398, LineInfo
ret
IsEqu01:
.stabn 1400, LineInfo
ld x,(0x32)
.stabn 1401, LineInfo
ld a,0x02
.stabn 1402, LineInfo
ld mx,a
.stabn 1403, LineInfo
inc x
.stabn 1404, LineInfo
ld a,0x01
.stabn 1405, LineInfo
ld mx,a
.stabn 1406, LineInfo
scf
.stabn 1407, LineInfo
ret
;-------------------------------------
; Cate : Display
; By : Hcy
; Func : display the icons from the samsung
; Desc : DspIcons
; I/P : --
; O/P : --
; Destroy:
; Note :
DspIcons:
.stabn 1419, LineInfo
ld y,(0x29)
.stabn 1420, LineInfo
ld x,0x09c
.stabn 1421, LineInfo
ld b,4
DspI0:
.stabn 1423, LineInfo
ld mx,my
.stabn 1424, LineInfo
inc y
.stabn 1425, LineInfo
inc x
.stabn 1426, LineInfo
ADD b,0x0F ; b-1
.stabn 1427, LineInfo
jp nz,DspI0
; add by hcy 03-11-24 12:02
.stabn 1429, LineInfo
ld y,(0x2a)
.stabn 1430, LineInfo
fan my,0b0010
.stabn 1431, LineInfo
jp nz,DspI1
.stabn 1433, LineInfo
calz DspColonOff
.stabn 1434, LineInfo
ret
DspI1:
.stabn 1436, LineInfo
calz DspColonOn
.stabn 1437, LineInfo
ret
;
SendKeyData:
; remark for new keyboard
; ld x,KPort
; fan mx,0100b
.stabn 1446, LineInfo
ld x,(0x0F6)
.stabn 1447, LineInfo
fan mx,0b0001
.stabn 1448, LineInfo
jp nz,Send0 ; BR IF D_CLK is high
SendCalKey:
.stabn 1450, LineInfo
LD X,(0x0F3)
; LD MX,0001b ; D_out low
.stabn 1452, LineInfo
and mx,0b0001 ; D_out low
.stabn 1454, LineInfo
CALL SendKey
.stabn 1455, LineInfo
LD X,(0x16)
.stabn 1456, LineInfo
AND MX,0x0f-(4) ; clear the flag after sending
; add by hcy for receive data after send key
.stabn 1458, LineInfo
ld x,(0x17)
.stabn 1459, LineInfo
ld mx,4
Send0:
.stabn 1461, LineInfo
RET
;
;-------------------------------------
; Cate : delay
; By : Hcy
; Func : delay 2.5s
; Desc : Dly250
; I/P : --
; O/P : --
; Destroy:
; Note :
Dly125:
.stabn 1473, LineInfo
ld y,0x0ef
Dly250:
.stabn 1475, LineInfo
ld y,0x0d8
Dly1:
.stabn 1477, LineInfo
call Dly125ms
.stabn 1478, LineInfo
inc y
.stabn 1479, LineInfo
cp yh,0x0f
.stabn 1480, LineInfo
jp nz,Dly1
.stabn 1481, 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 1510, LineInfo
ld a,0
.stabn 1511, LineInfo
ld mx,a
.stabn 1512, LineInfo
inc x
.stabn 1513, LineInfo
ld mx,a
.stabn 1514, 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 1526, LineInfo
ld y,(0x20)
.stabn 1527, LineInfo
cp my,0x0B
.stabn 1528, LineInfo
jp z,IsEquEE
.stabn 1529, LineInfo
scf
.stabn 1530, LineInfo
ret
IsEquEE:
.stabn 1532, LineInfo
rcf
.stabn 1533, LineInfo
ret
Init:
.stabn 1536, LineInfo
DI ; reset interrupt mask
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -