📄 r08cnvlcdclk1.ms
字号:
; ; 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 1135, LineInfo
JP Init ; reset vector
.stabn 1136, LineInfo
JP IntRTC ; clock interrupt -- may only be used to set flag
;
.org 0x104
.stabn 1139, 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 1155, LineInfo
ld x,(0x0E9)
.stabn 1156, LineInfo
ld a,mx ; read and clear any interrupt request flags
.stabn 1157, LineInfo
fan a,0b0010 ; chk 1/8 sec
.stabn 1158, LineInfo
jp z,TimeSet00
.stabn 1159, LineInfo
inc (M0) ; inc the keyhold time
.stabn 1160, LineInfo
call KeyScan
TimeSet00:
.stabn 1162, LineInfo
fan a,0b0100 ; chk 1/2 sec
.stabn 1163, LineInfo
jp z,TimeSet01
.stabn 1164, LineInfo
ld a,(M8)
.stabn 1165, LineInfo
fan a,0b1111
.stabn 1166, LineInfo
jp z,TimeR0
.stabn 1167, LineInfo
dec (M8)
.stabn 1168, LineInfo
jp TimeR1
; add by hcy 03-11-29 11:35
TimeR0:
.stabn 1171, LineInfo
ld X,(1)
.stabn 1172, LineInfo
AND MX,0x0f-(4) ; clr the key
TimeR1:
.stabn 1174, LineInfo
call ToggleHalfSecFlag
.stabn 1175, LineInfo
ld x,(0x16)
.stabn 1176, LineInfo
fan mx,(2)
TimeSet01:
.stabn 1178, LineInfo
jp z,TimeS0 ; br if just 0.5 sec
;
.stabn 1180, 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
.stabn 1184, LineInfo
ld a,(M5)
.stabn 1185, LineInfo
fan a,0b1111
.stabn 1186, LineInfo
jp z,NewTime0
.stabn 1187, LineInfo
dec (M5) ; dec timer 30s
NewTime0:
.stabn 1189, LineInfo
calz IncSecond
.stabn 1190, LineInfo
jp nc,TimeS0 ; No display update if change in second only
.stabn 1191, LineInfo
calz IncMinute
.stabn 1192, LineInfo
jp nc,TimeS0
.stabn 1193, LineInfo
calz IncHour
TimeS0:
.stabn 1195, LineInfo
ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : toggle the half sec flag
; Desc : ToggleHalfSecFlag
; I/P : --
; O/P : --
; Destroy:
; Note :
ToggleHalfSecFlag:
.stabn 1207, LineInfo
ld x,(0x16)
.stabn 1208, LineInfo
xor mx,(1)
.stabn 1209, LineInfo
fan mx,(1)
.stabn 1210, LineInfo
jp nz,xToggleHalfS
.stabn 1211, LineInfo
or mx,(2) ; set flag if from 1->0
xToggleHalfS:
.stabn 1213, LineInfo
ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : inc setting HOUR
; Desc : IncSetHour
; I/P : --
; O/P : --
; Destroy:
; Note :
IncSetHour:
.stabn 1225, LineInfo
ld x,(0x1A)
.stabn 1226, LineInfo
calz IncByteD
.stabn 1227, LineInfo
ld x,(0x1A)
.stabn 1228, LineInfo
calz IsEqu24
.stabn 1229, LineInfo
jp nc,IncSet0
.stabn 1230, LineInfo
ld x,(0x1A)
.stabn 1231, LineInfo
call ClrByte
IncSet0:
.stabn 1233, LineInfo
ld y,(0x1a)
.stabn 1234, LineInfo
calz DspHour
.stabn 1235, 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 1266, LineInfo
ld y,(0x1c)
.stabn 1267, LineInfo
ld my,0 ; clr the communication buffer
.stabn 1268, LineInfo
ld y,(0x17)
.stabn 1269, LineInfo
ld my,0x04 ; reload the communication bit counter
.stabn 1270, LineInfo
ret
;-------------------------------------
; Cate : communication
; By : Hcy
; Func : store to the receive buffer
; Desc : ToRecBuffer
; I/P : --
; O/P : --
; Destroy:
; Note :
ToRecBuffer:
.stabn 1281, LineInfo
ld y,(0x20)
.stabn 1282, LineInfo
ld x,(0x1d)
.stabn 1283, LineInfo
ld a,mx
Prog1:
.stabn 1285, LineInfo
ld YL,a
Prog2:
.stabn 1287, LineInfo
ld x,(0x1c)
.stabn 1288, LineInfo
ld my,mx ; store receive data to receive buffer
.stabn 1289, LineInfo
ret
;;-------------------------------------
; Cate : Display
; By : Kwan
; Func : Clear the LCD ram including digits/icons
; Desc :
; I/P :
; O/P :
; Destroy:
; Note :
LCDClr:
.stabn 1300, LineInfo
LD x,0x40
LCDClr0:
.stabn 1302, LineInfo
ldpx mx,0
.stabn 1303, LineInfo
cp xh,0x07 ; LCD ram from 40 to 6FH
.stabn 1304, LineInfo
jp nz, LCDClr0
.stabn 1305, LineInfo
ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : inc setting minute
; Desc : IncSetMinute
; I/P : --
; O/P : --
; Destroy:
; Note :
IncSetMinute:
.stabn 1317, LineInfo
ld x,(0x18)
.stabn 1318, LineInfo
calz IncByteD
.stabn 1319, LineInfo
ld x,(0x18)
.stabn 1320, LineInfo
calz IsEqu60
.stabn 1321, LineInfo
ld y,(0x18)
.stabn 1322, LineInfo
calz DspMinute
.stabn 1323, LineInfo
ret
;-------------------------------------
; Cate : Application
; By : Hcy
; Func :
; Desc : CopyByte
; I/P : y(ram address)
; O/P :
; Destroy:
; Note :
CopyByte:
.stabn 1335, LineInfo
ld x,(0x32)
.stabn 1336, LineInfo
ld mx,my
.stabn 1337, LineInfo
inc y
.stabn 1338, LineInfo
inc x
.stabn 1339, LineInfo
ld mx,my ; ram --> dsphourbuf
.stabn 1340, LineInfo
ret
;-------------------------------------
; Cate : Application
; By : Hcy
; Func : -0ch by decimal
; Desc : Sub12D
; I/P : y(address of buffer)
; O/P :
; Destroy:
; Note :
Sub12D:
.stabn 1351, LineInfo
push yl
.stabn 1352, LineInfo
call CopyByte
.stabn 1353, LineInfo
pop yl
.stabn 1354, LineInfo
ld x,(0x32)
; SET F,0100B
.stabn 1356, LineInfo
SDF
.stabn 1357, LineInfo
RCF
.stabn 1358, LineInfo
sbc Mx,0x02
.stabn 1359, LineInfo
inc x
.stabn 1360, LineInfo
sbc Mx,0x01
; RST F,1011B
.stabn 1362, LineInfo
RDF
.stabn 1363, LineInfo
RET
;
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : is che memory equ 12h
; Desc : IsEqu24
; I/P : --
; O/P : --
; Destroy:
; Note :
IsEqu12:
.stabn 1376, LineInfo
cp my,0x02
.stabn 1377, LineInfo
jp z,IsEqu120
.stabn 1378, LineInfo
rcf
.stabn 1379, LineInfo
ret
IsEqu120:
.stabn 1382, LineInfo
push yl
.stabn 1383, LineInfo
inc y
.stabn 1384, LineInfo
cp my,0x01
.stabn 1385, LineInfo
pop yl
.stabn 1386, LineInfo
jp z,IsEqu121 ; jmp if 1 minute time out
.stabn 1387, LineInfo
rcf
.stabn 1388, LineInfo
ret
IsEqu121:
.stabn 1390, LineInfo
call CopyByte
.stabn 1391, LineInfo
scf
.stabn 1392, LineInfo
ret
;
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : is che memory equ 0
; Desc : IsEqu24
; I/P : --
; O/P : --
; Destroy:
; Note :
IsEquZero:
.stabn 1405, LineInfo
cp my,0
.stabn 1406, LineInfo
jp z,IsEqu00
.stabn 1407, LineInfo
rcf
.stabn 1408, LineInfo
ret
IsEqu00:
.stabn 1411, LineInfo
push yl
.stabn 1412, LineInfo
inc y
.stabn 1413, LineInfo
cp my,0
.stabn 1414, LineInfo
pop yl
.stabn 1415, LineInfo
jp z,IsEqu01 ; jmp if 1 minute time out
.stabn 1416, LineInfo
rcf
.stabn 1417, LineInfo
ret
IsEqu01:
.stabn 1419, LineInfo
ld x,(0x32)
.stabn 1420, LineInfo
ld a,0x02
.stabn 1421, LineInfo
ld mx,a
.stabn 1422, LineInfo
inc x
.stabn 1423, LineInfo
ld a,0x01
.stabn 1424, LineInfo
ld mx,a
.stabn 1425, LineInfo
scf
.stabn 1426, 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:
; remark for new keyboard
; ld x,KPort
; fan mx,0100b
.stabn 1465, LineInfo
ld x,(0x0ED)
.stabn 1466, LineInfo
fan mx,0b0001
.stabn 1467, LineInfo
jp nz,Send0 ; BR IF D_CLK is high
SendCalKey:
.stabn 1469, LineInfo
LD X,(0x0EB)
; LD MX,0001b ; D_out low
.stabn 1471, LineInfo
and mx,0b0001 ; D_out low
.stabn 1473, LineInfo
CALL SendKey
.stabn 1474, LineInfo
LD X,(0x16)
.stabn 1475, LineInfo
AND MX,0x0f-(4) ; clear the flag after sending
; add by hcy for receive data after send key
.stabn 1477, LineInfo
ld x,(0x17)
.stabn 1478, LineInfo
ld mx,4
Send0:
.stabn 1480, LineInfo
RET
;
;-------------------------------------
; Cate : delay
; By : Hcy
; Func : delay 2.5s
; Desc : Dly250
; I/P : --
; O/P : --
; Destroy:
; Note :
Dly125:
.stabn 1492, LineInfo
ld y,0x0ef
Dly250:
.stabn 1494, LineInfo
ld y,0x0d8
Dly1:
.stabn 1496, LineInfo
call Dly125ms
.stabn 1497, LineInfo
inc y
.stabn 1498, LineInfo
cp yh,0x0f
.stabn 1499, LineInfo
jp nz,Dly1
.stabn 1500, 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 1529, LineInfo
ld a,0
.stabn 1530, LineInfo
ld mx,a
.stabn 1531, LineInfo
inc x
.stabn 1532, LineInfo
ld mx,a
.stabn 1533, 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 1545, LineInfo
ld y,(0x20)
.stabn 1546, LineInfo
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -