- MISC функции перенесены из 2 резидента в 3. - перераспределение TAB таблиц. - в описание Flex Navigator API добавлено описание глобальных переменных. FileViewer.flx 1.07 - мелкое исправление позиции вывода даты/времени. FileEditor.flx 1.11 - мелкое исправление позиции вывода даты/времени.
915 lines
13 KiB
Plaintext
915 lines
13 KiB
Plaintext
|
||
; LAST UPDATE: 03.08.2025 savelij
|
||
|
||
;[]-----------------------------------------------------------[]
|
||
; <20>à®æ¥¤ãà 㬮¦¥¨ï (8*8bit)
|
||
; <20> ¢å®¤: E * C
|
||
; <20> ¢ë室:
|
||
; HL - १ã«ìâ â
|
||
Mul_8X8_16b: SUB A
|
||
LD L,A
|
||
LD H,A
|
||
LD D,A
|
||
CP C
|
||
RET Z
|
||
CP E
|
||
RET Z
|
||
LD H,C
|
||
LD B,0x08
|
||
.L1 ADD HL,HL
|
||
JR NC,.L2
|
||
ADD HL,DE
|
||
.L2 DJNZ .L1
|
||
RET
|
||
|
||
; <20>à®æ¥¤ãà 㬮¦¥¨ï (16*8bit)
|
||
; <20> ¢å®¤: DE * C
|
||
; <20> ¢ë室:
|
||
; AHL - १ã«ìâ â
|
||
Mul_16X8_24b: SUB A
|
||
LD L,A
|
||
LD H,A
|
||
CP C
|
||
RET Z
|
||
OR D
|
||
OR E
|
||
RET Z
|
||
LD A,C
|
||
LD BC,8 << 8
|
||
.L1 ADD HL,HL
|
||
RLA
|
||
JR NC,.L2
|
||
ADD HL,DE
|
||
ADC A,C
|
||
.L2 DJNZ .L1
|
||
RET
|
||
|
||
; <20>à®æ¥¤ãà 㬮¦¥¨ï (16*16bit)
|
||
; <20> ¢å®¤: DE * BC
|
||
; <20> ¢ë室:
|
||
; HL - १ã«ìâ â
|
||
Mul_16X16_16b: LD HL,0x0000
|
||
LD A,0x10
|
||
.L1 RR B
|
||
RR C
|
||
JR NC,.L2
|
||
ADD HL,DE
|
||
.L2 RL E
|
||
RL D
|
||
DEC A
|
||
JR NZ,.L1
|
||
RET
|
||
|
||
; <20>à®æ¥¤ãà 㬮¦¥¨ï (32bit)
|
||
; <20> ¢å®¤: DE * BC
|
||
; <20> ¢ë室:
|
||
; HLDE - १ã«ìâ â
|
||
Mul_16X16_32b: PUSH IX
|
||
EX DE,HL
|
||
LD E,0x00
|
||
LD D,E
|
||
LD IXL,E
|
||
LD IXH,D
|
||
LD A,0x20
|
||
.L1 ADD IX,IX
|
||
ADC HL,HL
|
||
RL E
|
||
RL D
|
||
JR NC,.L2
|
||
ADD IX,BC
|
||
JR NC,.L2
|
||
INC HL
|
||
.L2 DEC A
|
||
JR NZ,.L1
|
||
LD E,IXL
|
||
LD D,IXH
|
||
POP IX
|
||
RET
|
||
|
||
; <20>à®æ¥¤ãà 㬮¦¥¨ï (32bit)
|
||
; <20> ¢å®¤: HLDE * BC
|
||
; <20> ¢ë室:
|
||
; HLDE - १ã«ìâ â
|
||
Mul_32X16_32b: PUSH IX
|
||
LD IX,0x0000
|
||
LD A,0x20
|
||
EX DE,HL
|
||
.L1 ADD IX,IX
|
||
ADC HL,HL
|
||
RL E
|
||
RL D
|
||
JR NC,.L2
|
||
ADD IX,BC
|
||
JR NC,.L2
|
||
INC HL
|
||
.L2 DEC A
|
||
JR NZ,.L1
|
||
LD E,IXL
|
||
LD D,IXH
|
||
POP IX
|
||
RET
|
||
|
||
; <20>à®æ¥¤ãà ¤¥«¥¨ï (16bit)
|
||
; <20> ¢å®¤: BC / DE
|
||
; <20> ¢ë室:
|
||
; BC - १ã«ìâ â
|
||
; HL - ®áâ ⮪
|
||
Div_16X16_16b_16b:
|
||
LD A,D
|
||
OR E
|
||
RET Z
|
||
LD HL,0x0000
|
||
LD A,B
|
||
LD B,0x10
|
||
.L1 RL C
|
||
RLA
|
||
ADC HL,HL
|
||
SBC HL,DE
|
||
CCF
|
||
JR NC,.L4
|
||
.L2 DJNZ .L1
|
||
RL C
|
||
RLA
|
||
LD B,A
|
||
RET
|
||
|
||
.L3 RL C
|
||
RLA
|
||
ADC HL,HL
|
||
ADD HL,DE
|
||
JR C,.L2
|
||
.L4 DJNZ .L3
|
||
RL C
|
||
RLA
|
||
ADD HL,DE
|
||
LD B,A
|
||
RET
|
||
|
||
; <20>à®æ¥¤ãà ¤¥«¥¨ï (24x16bit)
|
||
; <20> ¢å®¤: HLC / DE
|
||
; <20> ¢ë室:
|
||
; A -१ã«ìâ â
|
||
; HL - ®áâ ⮪
|
||
Div_24X16_8b_16b:
|
||
LD A,D
|
||
CPL
|
||
LD D,A
|
||
LD A,E
|
||
CPL
|
||
LD E,A
|
||
INC DE
|
||
LD A,C
|
||
LD B,0x08
|
||
.L1 ADD HL,HL
|
||
JR C,.L2
|
||
ADD A,A
|
||
JR NC,.L4
|
||
INC HL
|
||
.L4 PUSH HL
|
||
ADD HL,DE
|
||
JR NC,.L5
|
||
EX (SP),HL
|
||
INC A
|
||
.L5 POP HL
|
||
DJNZ .L1
|
||
RET
|
||
|
||
.L2 ADC A,A
|
||
JR NC,.L3
|
||
INC HL
|
||
.L3 ADD HL,DE
|
||
DJNZ .L1
|
||
RET
|
||
|
||
; <20>à®æ¥¤ãà ¤¥«¥¨ï 32/16bit=16bit
|
||
; <20> ¢å®¤: HLDE / BC
|
||
; <20> ¢ë室:
|
||
; DE - १ã«ìâ â
|
||
; HL - ®áâ ⮪
|
||
Div_32X16_16b_16b:
|
||
LD A,0x10
|
||
.L2 EX DE,HL
|
||
ADD HL,HL
|
||
EX DE,HL
|
||
ADC HL,HL
|
||
SBC HL,BC
|
||
JR NC,.L1
|
||
ADD HL,BC
|
||
DEC A
|
||
JR NZ,.L2
|
||
RET
|
||
|
||
.L1 INC DE
|
||
DEC A
|
||
JR NZ,.L2
|
||
RET
|
||
|
||
; <20>à®æ¥¤ãà ¤¥«¥¨ï 32/16bit=32bit
|
||
; <20> ¢å®¤: HLDE/BC
|
||
; <20> ¢ë室:
|
||
; HLDE - १ã«ìâ â
|
||
; BC-®áâ ⮪
|
||
Div_32X16_32b_16b:
|
||
PUSH IX
|
||
LD IXL,E
|
||
LD IXH,D
|
||
EX DE,HL
|
||
LD HL,0x0000
|
||
LD A,0x20
|
||
.L1 ADD IX,IX
|
||
RL E
|
||
RL D
|
||
ADC HL,HL
|
||
SBC HL,BC
|
||
JR NC,.L2
|
||
DEC IX
|
||
ADD HL,BC
|
||
.L2 INC IX
|
||
DEC A
|
||
JR NZ,.L1
|
||
LD C,L
|
||
LD B,H
|
||
EX DE,HL
|
||
LD E,IXL
|
||
LD D,IXH
|
||
POP IX
|
||
RET
|
||
|
||
;[]===================================================================[]
|
||
;<3B> ¢å®¤:
|
||
; ABCHL - ç¨á«® 40 ¡¨â
|
||
; DE - ¡ãä¥à
|
||
ConvertNumbers_40b:
|
||
PUSH IX
|
||
LD IX,ConvertFlg
|
||
RES 7,(IX+0x00)
|
||
PUSH BC
|
||
EXX
|
||
LD HL,ConNumbExit
|
||
LD (ChooseStringFormat.address),HL
|
||
POP HL
|
||
LD E,0x17
|
||
LD BC,0x4876
|
||
EXX
|
||
ld bc,0xE800
|
||
; E':BC':BC = 100,000,000,000
|
||
call ConNumb40
|
||
exx
|
||
ld e,0x02
|
||
ld bc,0x540B
|
||
exx
|
||
ld bc,0xE400
|
||
; E':BC':BC = 10,000,000,000
|
||
CALL ConNumb40
|
||
exx
|
||
ld e,0x00
|
||
ld bc,0x3B9A
|
||
exx
|
||
ld bc,0xCA00
|
||
; E':BC':BC = 1,000,000,000
|
||
CALL ConNumb40
|
||
; E':BC':BC = 100,000,000
|
||
CALL ConvNumTxt32_Shared.skip_1
|
||
POP IX
|
||
RET
|
||
|
||
;[]-----------------------------------------------------------[]
|
||
;Š®¢¥àâ¥à ç¨á« 32¡¨â ¢ ⥪áâ
|
||
;<3B> ¢å®¤:
|
||
; BCHL - ç¨á«® 32 ¡¨â
|
||
; DE - ¡ãä¥à
|
||
ConvertNumbers_32b:
|
||
PUSH IX
|
||
LD IX,ConvertFlg
|
||
RES 7,(IX+0x00)
|
||
PUSH BC
|
||
EXX
|
||
LD HL,ConNumbExit
|
||
LD (ChooseStringFormat.address),HL
|
||
POP HL
|
||
EXX
|
||
call ConvNumTxt32_Shared
|
||
POP IX
|
||
RET
|
||
|
||
ConvNumTxt32_Shared:
|
||
LD BC,0xCA00
|
||
EXX
|
||
LD BC,0x3B9A ;1'000'000'000
|
||
EXX
|
||
CALL ConNumb32
|
||
.skip_1: LD BC,0xE100
|
||
EXX
|
||
LD BC,0x05F5 ;100'000'000
|
||
EXX
|
||
CALL ConNumb32
|
||
LD BC,0x9680
|
||
EXX
|
||
LD BC,0x0098 ;10'000'000
|
||
EXX
|
||
CALL ConNumb32
|
||
LD BC,0x4240
|
||
EXX
|
||
LD BC,0x000F ;1'000'000
|
||
EXX
|
||
CALL ConNumb32
|
||
LD BC,0x86A0
|
||
EXX
|
||
LD BC,0x0001 ;100'000
|
||
EXX
|
||
CALL ConNumb32
|
||
LD BC,10000 ;10'000
|
||
EXX
|
||
LD BC,0x0000
|
||
EXX
|
||
CALL ConNumb32
|
||
LD BC,1000 ;1'000
|
||
CALL ConNumb16
|
||
LD BC,100 ;100
|
||
CALL ConNumb16
|
||
LD BC,10 ;10
|
||
CALL ConNumb16
|
||
LD A,L
|
||
ADD A,'0'
|
||
LD (DE),A
|
||
INC DE
|
||
RET
|
||
|
||
; Š®¢¥àâ¥à ç¨á« 16¡¨â ¢ ⥪áâ
|
||
; <20> ¢å®¤:
|
||
; HL - ç¨á«® 16 ¡¨â
|
||
; DE - ¡ãä¥à
|
||
ConvertNumbers_16b:
|
||
PUSH IX
|
||
PUSH BC
|
||
LD IX,ConNumbExit
|
||
ld (ChooseStringFormat.address),IX
|
||
LD IX,ConvertFlg
|
||
RES 7,(IX+0x00)
|
||
LD BC,10000 ;10'000
|
||
CALL ConNumb16
|
||
LD BC,1000 ;1'000
|
||
CALL ConNumb16
|
||
LD BC,100 ;100
|
||
CALL ConNumb16
|
||
LD BC,10 ;10
|
||
CALL ConNumb16
|
||
LD A,L
|
||
ADD A,'0'
|
||
LD (DE),A
|
||
INC DE
|
||
POP BC
|
||
POP IX
|
||
RET
|
||
|
||
; Š®¢¥àâ¥à ç¨á« 8¡¨â ¢ ⥪áâ
|
||
; <20> ¢å®¤:
|
||
; A - ç¨á«® 8 ¡¨â
|
||
; DE - ¡ãä¥à
|
||
ConvertNumbers_8b:
|
||
PUSH IX
|
||
PUSH BC
|
||
LD IX,ConNumbExit
|
||
ld (ChooseStringFormat.address),IX
|
||
LD IX,ConvertFlg
|
||
RES 7,(IX+0x00)
|
||
LD C,100
|
||
CALL ConNumb8
|
||
LD C,10
|
||
CALL ConNumb8
|
||
ADD A,'0'
|
||
LD (DE),A
|
||
INC DE
|
||
POP BC
|
||
POP IX
|
||
RET
|
||
|
||
;----------------------------------------------------------------------;
|
||
ConNumb40: exx
|
||
ld d,'0'-1
|
||
exx
|
||
and a
|
||
.loop: sbc hl,bc
|
||
exx
|
||
sbc hl,bc
|
||
sbc a,e
|
||
inc d
|
||
exx
|
||
jp nc,.loop
|
||
add hl,bc
|
||
exx
|
||
adc hl,bc
|
||
adc a,e
|
||
ex af,af'
|
||
ld a,d
|
||
exx
|
||
JR ConNumb8.exit
|
||
|
||
ConNumb32: LD A,'0' - 1
|
||
OR A
|
||
.loop: INC A
|
||
SBC HL,BC
|
||
EXX
|
||
SBC HL,BC
|
||
EXX
|
||
JR NC,.loop
|
||
ADD HL,BC
|
||
EXX
|
||
ADC HL,BC
|
||
EXX
|
||
JR ChooseStringFormat
|
||
|
||
ConNumb16: LD A,'0' - 1
|
||
OR A
|
||
.loop: INC A
|
||
SBC HL,BC
|
||
JR NC,.loop
|
||
ADD HL,BC
|
||
JR ChooseStringFormat
|
||
|
||
ConNumb8: LD B,'0' - 1
|
||
.loop: INC B
|
||
SUB C
|
||
JR NC,.loop
|
||
ADD A,C
|
||
EX AF,AF'
|
||
LD A,B
|
||
.exit: CALL ChooseStringFormat
|
||
EX AF,AF'
|
||
RET
|
||
|
||
ConvertFlg DEFB 0x00
|
||
|
||
ChooseStringFormat:
|
||
JP 0x0000
|
||
.address: equ $-2
|
||
|
||
ConNumbExit: CP "0"
|
||
JR Z,.skip
|
||
SET 7,(IX+0x00)
|
||
.skip: BIT 7,(IX+0x00)
|
||
RET Z
|
||
LD (DE),A
|
||
INC DE
|
||
RET
|
||
|
||
;[]-----------------------------------------------------------[]
|
||
; Š®¢¥àâ¥à ⥪áâ ¢ ç¨á«® 32 ¡¨â
|
||
; <20> ¢å®¤:
|
||
; DE - ⥪áâ
|
||
; <20> ¢ë室:
|
||
; HLIX - ç¨á«®
|
||
; CY - ®è¨¡ª
|
||
atoi_32b: LD IX,0x0000
|
||
LD HL,0x0000
|
||
ConvTN1 LD A,(DE)
|
||
CP 0x21
|
||
CCF
|
||
RET NC
|
||
SUB 0x30
|
||
RET C
|
||
CP 0x0A
|
||
CCF
|
||
RET C
|
||
INC DE
|
||
ADD IX,IX
|
||
ADC HL,HL
|
||
RET C
|
||
PUSH HL
|
||
PUSH IX
|
||
ADD IX,IX
|
||
ADC HL,HL
|
||
RET C
|
||
ADD IX,IX
|
||
ADC HL,HL
|
||
RET C
|
||
POP BC
|
||
ADD IX,BC
|
||
POP BC
|
||
ADC HL,BC
|
||
RET C
|
||
LD C,A
|
||
LD B,0x00
|
||
ADD IX,BC
|
||
LD C,B
|
||
ADC HL,BC
|
||
RET C
|
||
JR ConvTN1
|
||
|
||
; Š®¢¥àâ¥à ⥪áâ ¢ ç¨á«® 16 ¡¨â
|
||
; <20> ¢å®¤:
|
||
; DE - ⥪áâ
|
||
; <20> ¢ë室:
|
||
; HL - ç¨á«®
|
||
; CY - ®è¨¡ª
|
||
atoi_16b: LD HL,0x0000
|
||
ConvTN2 LD A,(DE)
|
||
CP 0x21
|
||
CCF
|
||
RET NC
|
||
SUB 0x30
|
||
RET C
|
||
CP 0x0A
|
||
CCF
|
||
RET C
|
||
INC DE
|
||
ADD HL,HL
|
||
RET C
|
||
PUSH HL
|
||
ADD HL,HL
|
||
RET C
|
||
ADD HL,HL
|
||
RET C
|
||
POP BC
|
||
ADD HL,BC
|
||
RET C
|
||
LD C,A
|
||
LD B,0x00
|
||
ADD HL,BC
|
||
RET C
|
||
JR ConvTN2
|
||
|
||
;[]-----------------------------------------------------------[]
|
||
MoveBytesInc: LD A,B
|
||
OR A
|
||
JR Z,MvByte1
|
||
DI
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
MvByte0
|
||
ACCEL ACCELCMD.COPY
|
||
LD A,(HL)
|
||
LD (DE),A
|
||
ACCEL ACCELCMD.OFF
|
||
INC H
|
||
INC D
|
||
DEC B
|
||
JR NZ,MvByte0
|
||
EI
|
||
MvByte1 LD A,C
|
||
OR A
|
||
RET Z
|
||
LD (Mvlen1),A
|
||
DI
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
Mvlen1 EQU $-1
|
||
ACCEL ACCELCMD.COPY
|
||
LD A,(HL)
|
||
LD (DE),A
|
||
ACCEL ACCELCMD.OFF
|
||
EI
|
||
LD A,C
|
||
ADD A,E
|
||
LD E,A
|
||
JR NC,.L1
|
||
INC D
|
||
.L1 LD A,C
|
||
ADD A,L
|
||
LD L,A
|
||
RET NC
|
||
INC H
|
||
RET
|
||
|
||
MoveBytesDec: LD A,B
|
||
OR A
|
||
JR Z,MovUp1
|
||
DI
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LD A,0x00
|
||
MovUp0 DEC H
|
||
DEC D
|
||
ACCEL ACCELCMD.COPY
|
||
LD A,(HL)
|
||
LD (DE),A
|
||
ACCEL ACCELCMD.OFF
|
||
DEC B
|
||
JR NZ,MovUp0
|
||
EI
|
||
MovUp1 LD A,C
|
||
OR A
|
||
RET Z
|
||
LD (LenUp+1),A
|
||
SBC HL,BC
|
||
EX DE,HL
|
||
SBC HL,BC
|
||
EX DE,HL
|
||
DI
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
LenUp LD A,0x00
|
||
ACCEL ACCELCMD.COPY
|
||
LD A,(HL)
|
||
LD (DE),A
|
||
ACCEL ACCELCMD.OFF
|
||
EI
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
; Š®ª ⥠æ¨ï áâப¨. „®¡ ¢«ï¥âáï áâப ¨§ hl ¢ ª®¥æ áâப¨ ¢ de. <20>ã«ì ª®¯¨àã¥âáï ⮦¥.
|
||
; (hl) -> (de)
|
||
STRCAT: ex hl,de
|
||
.loop: ld a,(hl)
|
||
or a
|
||
jr z,.end
|
||
inc hl
|
||
jr .loop
|
||
|
||
.end: ex hl,de ;‚¨¬ ¨¥!!! ®¦¨¤ ¥âáï, çâ® ¤ «ìè¥
|
||
; ¨¤¥â CopyString, ¯®í⮬㠥᫨ ¬¥¦¤ã í⨬¨ ¯/¯ ¤®¡ ¢¨«¨ çâ®-â® - ¤®¡ ¢ì ¢ë§®¢ CopyString!
|
||
;[]----------------------------------------------------------[]
|
||
; Š®¯¨à®¢ ¨¥ áâப¨ ¤® ã«ï. <20>ã«ì ª®¯¨àã¥âáï ⮦¥.
|
||
; (hl) -> (de)
|
||
STRCPY: ld a,(hl)
|
||
ldi
|
||
or a
|
||
jr nz,STRCPY
|
||
dec de
|
||
ret
|
||
|
||
;[]----------------------------------------------------------[]
|
||
; Š®¯¨à®¢ ¨¥ áâப¨ ¤® ã«ï ¨«¨ ¯à®¡¥« . ‚ ª®¥æ ¤®¡ ¢«ï¥âáï ã«ì.
|
||
; (hl) -> (de)
|
||
;!FIXIT ¥á«¨ ¥ ¡ã¤¥â 0 ¨ ¯à®¡¥« - ¬®¦¥â ¬®£® § ¯®à®âì
|
||
CopyWord: ld bc, 0x20FF
|
||
.loop: ld a,(hl)
|
||
ldi
|
||
or a
|
||
ret z
|
||
cp b
|
||
jr nz,.loop
|
||
dec de
|
||
xor a
|
||
ld (de),a
|
||
ret
|
||
|
||
;[]----------------------------------------------------------[]
|
||
; ‘à ¢¥¨¥ áâப¨ á ãç¥â®¬ ॣ¨áâà .
|
||
; (®¡à §¥æ ¤®«¦¥ § ª 稢 âìáï ã«¥¬)
|
||
; ¢å®¤: de - string1
|
||
; hl - string2 (®¡à §¥æ)
|
||
; ¢ë室: "z" - string1 = string2
|
||
; "c" - string1 < string2
|
||
; ¨ ç¥ - string1 > string2
|
||
;[]----------------------------------------------------------[]
|
||
STRCMP: ld a,(de)
|
||
cp (hl)
|
||
ret nz
|
||
inc hl
|
||
inc de
|
||
ld a,(hl)
|
||
or a
|
||
jr nz,STRCMP ; ®¡à §¥æ ¥ § ª®ç¥
|
||
ld a,(de)
|
||
cp (hl)
|
||
ret
|
||
|
||
; <20>®¨áª ª®æ á«®¢ ¨«¨ áâப¨
|
||
; > hl - áâப
|
||
; < hl - ª®¥æ áâப¨ ¨«¨
|
||
SkipWord: ld b,0x20
|
||
.loop: ld a,(hl)
|
||
inc hl
|
||
cp b
|
||
jr z,.skipSpace
|
||
and a
|
||
jr nz,.loop
|
||
.end: dec hl
|
||
ret
|
||
|
||
.skipSpace: ld a,(hl)
|
||
cp b
|
||
ret nz
|
||
inc hl
|
||
jr .skipSpace
|
||
|
||
;[]----------------------------------------------------------[]
|
||
; HL - X ¯®§¨æ¨ï ¢ë¢®¤ ¢à¥¬¥¨
|
||
; DE - Y ¯®§¨æ¨ï ¢ë¢®¤ ¢à¥¬¥¨
|
||
; B - 梥⠢뢮¤ ¢à¥¬¥¨
|
||
; HL' - X ¯®§¨æ¨ï ¢ë¢®¤ ¤ âë
|
||
; DE' - Y ¯®§¨æ¨ï ¢ë¢®¤ ¤ âë
|
||
; B' - 梥⠢뢮¤ ¤ âë
|
||
; A - ä®à¬ ⠢뢮¤ ¬¥áïæ ¢ ¤ â¥
|
||
; 1 - ¬¥áïæ ¢ë¢®¤¨âáï ç¨á«®¬
|
||
; 2 - ¬¥áïæ ¢ë¢®¤¨âáï ⥪á⮬,
|
||
; ç¨á«® ¢ë¢®¤¨âáï ¡¥§ ¢¥¤ã饣® ã«ï
|
||
CMOSPrintDateTime:
|
||
LD (CMOSpos.CMOSOut),A
|
||
LD (CMOSpos.posXtime),HL
|
||
LD (CMOSpos.posYtime),DE
|
||
LD A,B
|
||
LD (CMOSpos.colorTime),A
|
||
SUB A
|
||
LD L,A
|
||
LD H,A
|
||
LD (CMOSPrint),A
|
||
LD (CMOSpos.Time),HL
|
||
LD (CMOSpos.Time + 2),A
|
||
EXX
|
||
LD (CMOSpos.posXDate),HL
|
||
LD (CMOSpos.posYDate),DE
|
||
LD A,B
|
||
LD (CMOSpos.colorDate),A
|
||
EXX
|
||
TestCMOS: LD A,(CMOSFlag)
|
||
OR A
|
||
RET Z
|
||
LD A,(CMOSPrint)
|
||
OR A
|
||
RET NZ
|
||
PUSH IX
|
||
HALT
|
||
;!TEST
|
||
;DI
|
||
SPDSS DSSF.GETTIME
|
||
;!TEST
|
||
;EI
|
||
PUSH DE
|
||
PUSH IX ; DE,IX á®åà ¨«¨ ¤¥ì,¬¥áïæ £®¤
|
||
EX DE,HL
|
||
LD HL,(CMOSpos.Time)
|
||
OR A
|
||
SBC HL,DE
|
||
JR NZ,.PrnCMOSTime
|
||
LD A,(CMOSpos.Time + 2)
|
||
CP B
|
||
JR Z,.TCMOS1
|
||
.PrnCMOSTime: EX DE,HL
|
||
LD (CMOSpos.Time),HL
|
||
LD A,B
|
||
LD (CMOSpos.Time + 2),A
|
||
LD DE,CMOSpos.TimeTXT
|
||
LD A,H ; ç áë
|
||
CALL Conv4CMOS
|
||
INC DE
|
||
LD A,L ; ¬¨ãâë
|
||
CALL Conv4CMOS
|
||
INC DE
|
||
LD A,(CMOSpos.Time + 2) ; ᥪã¤ë
|
||
CALL Conv4CMOS
|
||
LD HL,CMOSpos.TimeTXT
|
||
LD DE,(CMOSpos.posXtime)
|
||
LD BC,(CMOSpos.posYtime)
|
||
LD A,(CMOSpos.colorTime)
|
||
CALL PrintTxtLine_IFF
|
||
.TCMOS1 POP IX
|
||
POP DE ; DE,IX ¢®ááâ ®¢¨«¨ ¤¥ì,¬¥áïæ,£®¤
|
||
LD A,(CMOSpos.CMOSOut)
|
||
OR A
|
||
JP Z,TCMOSexit
|
||
EX DE,HL
|
||
LD (CMOSpos.Date),HL ; ¤¥ì,¬¥áïæ
|
||
LD (CMOSpos.Date + 2),IX ; £®¤
|
||
LD A,(CMOSpos.CMOSOut)
|
||
DEC A
|
||
JR NZ,.TCMOS2
|
||
; ¢ë¢®¤ ¤ âë ¢¢¨¤¥ 02.08.2025
|
||
LD DE,CMOSpos.DateTXT
|
||
LD A,H
|
||
CALL Conv4CMOS
|
||
INC DE
|
||
LD A,L
|
||
CALL Conv4CMOS
|
||
INC DE
|
||
LD HL,(CMOSpos.Date + 2)
|
||
CALL ConvertNumbers_16b
|
||
LD HL,CMOSpos.DateTXT
|
||
LD DE,(CMOSpos.posXDate)
|
||
LD BC,(CMOSpos.posYDate)
|
||
LD A,(CMOSpos.colorDate)
|
||
CALL PrintTxtLine_IFF
|
||
JR TCMOSexit
|
||
|
||
; ¢ë¢®¢ ¤ âë ¢¢¨¤¥ 2 Aug 2025
|
||
.TCMOS2 LD DE,CMOSpos.DateT1
|
||
LD A,H
|
||
CALL ConvertNumbers_8b
|
||
LD A,' '
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,L
|
||
DEC A
|
||
ADD A,A
|
||
ADD A,A
|
||
LD HL,Month
|
||
ADD A,L
|
||
LD L,A
|
||
ADC A,H
|
||
SUB L
|
||
LD H,A
|
||
LD A,' '
|
||
.L2 LDI
|
||
CP (HL)
|
||
JR NZ,.L2
|
||
LDI
|
||
LD HL,(CMOSpos.Date + 2)
|
||
CALL ConvertNumbers_16b
|
||
SUB A
|
||
LD (DE),A
|
||
LD HL,CMOSpos.DateT1
|
||
LD DE,(CMOSpos.posXDate)
|
||
LD BC,(CMOSpos.posYDate)
|
||
LD A,(CMOSpos.colorDate)
|
||
CALL PrintTxtLine_IFF
|
||
TCMOSexit POP IX
|
||
RET
|
||
|
||
Conv4CMOS: EX DE,HL
|
||
LD BC,(('0' - 1) << 8) + 10
|
||
.L1 INC B
|
||
SUB C
|
||
JR NC,.L1
|
||
ADD A,C
|
||
LD (HL),B
|
||
INC HL
|
||
ADD A,'0'
|
||
LD (HL),A
|
||
INC HL
|
||
EX DE,HL
|
||
RET
|
||
|
||
CMOSpos
|
||
.CMOSOut: DB 0 ; ⨯ ¢ë¢®¤ ¤ âë:
|
||
; 0 - â¥áâ
|
||
; 1 - ¤¥ì/¬¥áïæ/£®¤
|
||
; 2 - ¤¥ì ¬¥áïæ £®¤
|
||
.posXtime: DW 0 ; ¯®§¨æ¨ï X ¤«ï ¢à¥¬¥¨
|
||
.posYtime: DW 0 ; ¯®§¨æ¨ï Y ¤«ï ¢à¥¬¥¨
|
||
.colorTime: DB 0 ; 梥⠤«ï ¢à¥¬¥¨
|
||
.Time: DB 3 DUP 0 ; ç áë,¬¨ãâë,ᥪã¤ë
|
||
.TimeTXT: DZ "00:00:00"
|
||
.posXDate: DW 0 ; ¯®§¨æ¨ï X ¤«ï ¤ âë
|
||
.posYDate: DW 0 ; ¯®§¨æ¨ï Y ¤«ï ¤ âë
|
||
.colorDate: DB 0 ; 梥⠤«ï ¤ âë
|
||
.Date: DD 0 ; ¤¥ì,¬¥áïæ,£®¤
|
||
.DateTXT: DZ "00.00.0000"
|
||
.DateT1: DB 14 DUP 0
|
||
|
||
Month: DB "Jan "
|
||
DB "Feb "
|
||
DB "Mar "
|
||
DB "Apr "
|
||
DB "May "
|
||
DB "Jun "
|
||
DB "Jul "
|
||
DB "Aug "
|
||
DB "Sep "
|
||
DB "Oct "
|
||
DB "Nov "
|
||
DB "Dec "
|
||
|
||
;[]----------------------------------------------------------[]
|
||
PointerMouseClock:
|
||
LD A,(MouseFlag)
|
||
OR A
|
||
RET Z
|
||
PUSH IY
|
||
PUSH IX
|
||
PUSH HL
|
||
PUSH DE
|
||
PUSH BC
|
||
GETPORT WINSP.CPU3
|
||
PUSH AF
|
||
LD A,(RAMPAGES.FNFONT)
|
||
SETPORT WINSP.CPU3,,0
|
||
LD IX,CLOCK_BMP
|
||
LD HL,14 << 8 + 9
|
||
LD DE,7 << 8 | 4
|
||
SPMOUSE MOUSEF.LOAD_IMAGE
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
POP BC
|
||
POP DE
|
||
POP HL
|
||
POP IX
|
||
POP IY
|
||
HALT
|
||
RET
|
||
|
||
PointerMousePointer:
|
||
LD A,(MouseFlag)
|
||
OR A
|
||
RET Z
|
||
PUSH IY
|
||
PUSH IX
|
||
PUSH HL
|
||
PUSH DE
|
||
PUSH BC
|
||
GETPORT WINSP.CPU3
|
||
PUSH AF
|
||
LD A,(RAMPAGES.FNFONT)
|
||
SETPORT WINSP.CPU3,,0
|
||
LD IX,MOUSE_BMP
|
||
LD HL,13 << 8 + 9
|
||
LD DE,0
|
||
SPMOUSE MOUSEF.LOAD_IMAGE
|
||
POP AF
|
||
SETPORT WINSP.CPU3,,0
|
||
POP BC
|
||
POP DE
|
||
POP HL
|
||
POP IX
|
||
POP IY
|
||
HALT
|
||
RET
|