📄 r08cnvlcdclk.ms
字号:
; 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 1103, LineInfo
JP Init ; reset vector
.stabn 1104, LineInfo
JP IntRTC ; clock interrupt -- may only be used to set flag
;
.org 0x104
.stabn 1107, 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 1123, LineInfo
ld x,(0x0E9)
.stabn 1124, LineInfo
ld a,mx ; read and clear any interrupt request flags
.stabn 1125, LineInfo
fan a,0b0010 ; chk 1/8 sec
.stabn 1126, LineInfo
jp z,TimeSet00
.stabn 1127, LineInfo
inc (M0) ; inc the keyhold time
.stabn 1128, LineInfo
call KeyScan
TimeSet00:
.stabn 1130, LineInfo
fan a,0b0100 ; chk 1/2 sec
.stabn 1131, LineInfo
jp z,TimeSet01
.stabn 1132, LineInfo
ld a,(M8)
.stabn 1133, LineInfo
fan a,0b1111
.stabn 1134, LineInfo
jp z,TimeR0
.stabn 1135, LineInfo
dec (M8)
.stabn 1136, LineInfo
jp TimeR1
; add by hcy 03-11-29 11:35
TimeR0:
.stabn 1139, LineInfo
ld X,(1)
.stabn 1140, LineInfo
AND MX,0x0f-(4) ; clr the key
TimeR1:
.stabn 1142, LineInfo
call ToggleHalfSecFlag
.stabn 1143, LineInfo
ld x,(0x16)
.stabn 1144, LineInfo
fan mx,(2)
TimeSet01:
.stabn 1146, LineInfo
jp z,TimeS0 ; br if just 0.5 sec
;
.stabn 1148, LineInfo
and mx,0x0f-(2) ; clear the bit
; update the clock per 1 min
;
.stabn 1152, LineInfo
calz IncSecond
.stabn 1153, LineInfo
jp nc,TimeS0 ; No display update if change in second only
.stabn 1154, LineInfo
calz IncMinute
.stabn 1155, LineInfo
jp nc,TimeS0
.stabn 1156, LineInfo
calz IncHour
TimeS0:
.stabn 1158, LineInfo
ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : toggle the half sec flag
; Desc : ToggleHalfSecFlag
; I/P : --
; O/P : --
; Destroy:
; Note :
ToggleHalfSecFlag:
.stabn 1170, LineInfo
ld x,(0x16)
.stabn 1171, LineInfo
xor mx,(1)
.stabn 1172, LineInfo
fan mx,(1)
.stabn 1173, LineInfo
jp nz,xToggleHalfS
.stabn 1174, LineInfo
or mx,(2) ; set flag if from 1->0
xToggleHalfS:
.stabn 1176, LineInfo
ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : inc setting HOUR
; Desc : IncSetHour
; I/P : --
; O/P : --
; Destroy:
; Note :
IncSetHour:
.stabn 1188, LineInfo
ld x,(0x1A)
.stabn 1189, LineInfo
calz IncByteD
.stabn 1190, LineInfo
ld x,(0x1A)
.stabn 1191, LineInfo
calz IsEqu24
.stabn 1192, LineInfo
jp nc,IncSet0
.stabn 1193, LineInfo
ld x,(0x1A)
.stabn 1194, LineInfo
call ClrByte
IncSet0:
.stabn 1196, LineInfo
ld y,(0x1a)
.stabn 1197, LineInfo
calz DspHour
.stabn 1198, 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 1210, LineInfo
ld a,4
Copy0:
.stabn 1212, LineInfo
ld my,mx
.stabn 1213, LineInfo
inc x
.stabn 1214, LineInfo
inc y
.stabn 1215, LineInfo
add a,0x0f ; dec a
.stabn 1216, LineInfo
jp nz,Copy0
.stabn 1217, LineInfo
ret
;-------------------------------------
; Cate : communication
; By : Hcy
; Func : reload the communication variable
; Desc : ReloadCommVar
; I/P : --
; O/P : --
; Destroy:
; Note :
ReloadCommVar:
.stabn 1229, LineInfo
ld y,(0x1c)
.stabn 1230, LineInfo
ld my,0 ; clr the communication buffer
.stabn 1231, LineInfo
ld y,(0x17)
.stabn 1232, LineInfo
ld my,0x04 ; reload the communication bit counter
.stabn 1233, LineInfo
ret
;-------------------------------------
; Cate : communication
; By : Hcy
; Func : store to the receive buffer
; Desc : ToRecBuffer
; I/P : --
; O/P : --
; Destroy:
; Note :
ToRecBuffer:
.stabn 1244, LineInfo
ld y,(0x20)
.stabn 1245, LineInfo
ld x,(0x1d)
.stabn 1246, LineInfo
ld a,mx
Prog1:
.stabn 1248, LineInfo
ld YL,a
Prog2:
.stabn 1250, LineInfo
ld x,(0x1c)
.stabn 1251, LineInfo
ld my,mx ; store receive data to receive buffer
.stabn 1252, LineInfo
ret
;;-------------------------------------
; Cate : Display
; By : Kwan
; Func : Clear the LCD ram including digits/icons
; Desc :
; I/P :
; O/P :
; Destroy:
; Note :
LCDClr:
.stabn 1263, LineInfo
LD x,0x40
LCDClr0:
.stabn 1265, LineInfo
ldpx mx,0
.stabn 1266, LineInfo
cp xh,0x07 ; LCD ram from 40 to 6FH
.stabn 1267, LineInfo
jp nz, LCDClr0
.stabn 1268, LineInfo
ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : inc setting minute
; Desc : IncSetMinute
; I/P : --
; O/P : --
; Destroy:
; Note :
IncSetMinute:
.stabn 1280, LineInfo
ld x,(0x18)
.stabn 1281, LineInfo
calz IncByteD
.stabn 1282, LineInfo
ld x,(0x18)
.stabn 1283, LineInfo
calz IsEqu60
.stabn 1284, LineInfo
ld y,(0x18)
.stabn 1285, LineInfo
calz DspMinute
.stabn 1286, LineInfo
ret
;-------------------------------------
; Cate : Application
; By : Hcy
; Func :
; Desc : CopyByte
; I/P : y(ram address)
; O/P :
; Destroy:
; Note :
CopyByte:
.stabn 1298, LineInfo
ld x,(0x32)
.stabn 1299, LineInfo
ld mx,my
.stabn 1300, LineInfo
inc y
.stabn 1301, LineInfo
inc x
.stabn 1302, LineInfo
ld mx,my ; ram --> dsphourbuf
.stabn 1303, LineInfo
ret
;-------------------------------------
; Cate : Application
; By : Hcy
; Func : -0ch by decimal
; Desc : Sub12D
; I/P : y(address of buffer)
; O/P :
; Destroy:
; Note :
Sub12D:
.stabn 1314, LineInfo
push yl
.stabn 1315, LineInfo
call CopyByte
.stabn 1316, LineInfo
pop yl
.stabn 1317, LineInfo
ld x,(0x32)
.stabn 1318, LineInfo
SET F,0b0100
.stabn 1319, LineInfo
RCF
.stabn 1320, LineInfo
sbc Mx,0x02
.stabn 1321, LineInfo
inc x
.stabn 1322, LineInfo
sbc Mx,0x01
.stabn 1323, LineInfo
RST F,0b1011
.stabn 1324, LineInfo
RET
;
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : is che memory equ 12h
; Desc : IsEqu24
; I/P : --
; O/P : --
; Destroy:
; Note :
IsEqu12:
.stabn 1337, LineInfo
cp my,0x02
.stabn 1338, LineInfo
jp z,IsEqu120
.stabn 1339, LineInfo
rcf
.stabn 1340, LineInfo
ret
IsEqu120:
.stabn 1343, LineInfo
push yl
.stabn 1344, LineInfo
inc y
.stabn 1345, LineInfo
cp my,0x01
.stabn 1346, LineInfo
pop yl
.stabn 1347, LineInfo
jp z,IsEqu121 ; jmp if 1 minute time out
.stabn 1348, LineInfo
rcf
.stabn 1349, LineInfo
ret
IsEqu121:
.stabn 1351, LineInfo
call CopyByte
.stabn 1352, LineInfo
scf
.stabn 1353, LineInfo
ret
;
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : is che memory equ 0
; Desc : IsEqu24
; I/P : --
; O/P : --
; Destroy:
; Note :
IsEquZero:
.stabn 1366, LineInfo
cp my,0
.stabn 1367, LineInfo
jp z,IsEqu00
.stabn 1368, LineInfo
rcf
.stabn 1369, LineInfo
ret
IsEqu00:
.stabn 1372, LineInfo
push yl
.stabn 1373, LineInfo
inc y
.stabn 1374, LineInfo
cp my,0
.stabn 1375, LineInfo
pop yl
.stabn 1376, LineInfo
jp z,IsEqu01 ; jmp if 1 minute time out
.stabn 1377, LineInfo
rcf
.stabn 1378, LineInfo
ret
IsEqu01:
.stabn 1380, LineInfo
ld x,(0x32)
.stabn 1381, LineInfo
ld a,0x02
.stabn 1382, LineInfo
ld mx,a
.stabn 1383, LineInfo
inc x
.stabn 1384, LineInfo
ld a,0x01
.stabn 1385, LineInfo
ld mx,a
.stabn 1386, LineInfo
scf
.stabn 1387, 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 1422, LineInfo
ld x,(0x0E3)
.stabn 1423, LineInfo
fan mx,0b0100
.stabn 1424, LineInfo
jp nz,Send0 ; BR IF D_CLK is high
SendCalKey:
.stabn 1426, LineInfo
LD X,(0x0EB)
; LD MX,0001b ; D_out low
.stabn 1428, LineInfo
and mx,0b0001 ; D_out low
.stabn 1430, LineInfo
CALL SendKey
.stabn 1431, LineInfo
LD X,(0x16)
.stabn 1432, LineInfo
AND MX,0x0f-(4) ; clear the flag after sending
Send0:
.stabn 1434, LineInfo
RET
;
;-------------------------------------
; Cate : delay
; By : Hcy
; Func : delay 2.5s
; Desc : Dly250
; I/P : --
; O/P : --
; Destroy:
; Note :
Dly125:
.stabn 1446, LineInfo
ld y,0x0ef
Dly250:
.stabn 1448, LineInfo
ld y,0x0d8
Dly1:
.stabn 1450, LineInfo
call Dly125ms
.stabn 1451, LineInfo
inc y
.stabn 1452, LineInfo
cp yh,0x0f
.stabn 1453, LineInfo
jp nz,Dly1
.stabn 1454, 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 1483, LineInfo
ld a,0
.stabn 1484, LineInfo
ld mx,a
.stabn 1485, LineInfo
inc x
.stabn 1486, LineInfo
ld mx,a
.stabn 1487, 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 1499, LineInfo
ld y,(0x20)
.stabn 1500, LineInfo
cp my,0x0B
.stabn 1501, LineInfo
jp z,IsEquEE
.stabn 1502, LineInfo
scf
.stabn 1503, LineInfo
ret
IsEquEE:
.stabn 1505, LineInfo
rcf
.stabn 1506, LineInfo
ret
Init:
.stabn 1509, LineInfo
DI ; reset interrupt mask
.stabn 1510, LineInfo
RST F,0b0011
; LD A,0
; LD xp,a ; reset XP
; LD YP,A
.stabn 1515, LineInfo
LD A,0x0f ; define SP
.stabn 1516, LineInfo
LD B,0x04
.stabn 1517, LineInfo
LD SPL,A
.stabn 1518, LineInfo
LD SPH,B
;
.stabn 1520, LineInfo
NOP5
; NOP5
.stabn 1523, LineInfo
ld a,0x02
.stabn 1524, LineInfo
ld xp,a
.stabn 1525, LineInfo
ld yp,a
;
; Cold start from here
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -