949 lines
13 KiB
Plaintext
949 lines
13 KiB
Plaintext
|
||
; LAST UPDATE: 08.03.2025 savelij
|
||
|
||
;[]-----------------------------------------------------------[]
|
||
;<3B>à®æ¥¤ãà 㬮¦¥¨ï (8*8bit)
|
||
;<3B> ¢å®¤: E*C
|
||
;<3B> ¢ë室:HL-१ã«ìâ â
|
||
Mult8 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
|
||
|
||
;<3B>à®æ¥¤ãà 㬮¦¥¨ï (16*8bit)
|
||
;<3B> ¢å®¤: DE*C
|
||
;<3B> ¢ë室:A+HL-१ã«ìâ â
|
||
Mult16X8 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
|
||
|
||
;<3B>à®æ¥¤ãà 㬮¦¥¨ï (16*16bit)
|
||
;<3B> ¢å®¤: DE*BC
|
||
;<3B> ¢ë室:HL-१ã«ìâ â
|
||
Mult16 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
|
||
|
||
;<3B>à®æ¥¤ãà 㬮¦¥¨ï (32bit)
|
||
;<3B> ¢å®¤: DE*BC
|
||
;<3B> ¢ë室:HL+DE-१ã«ìâ â
|
||
Mult16X16 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
|
||
|
||
;<3B>à®æ¥¤ãà 㬮¦¥¨ï (32bit)
|
||
;<3B> ¢å®¤: HL+DE*BC
|
||
;<3B> ¢ë室:HL+DE-१ã«ìâ â
|
||
Mult32 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
|
||
|
||
;<3B>à®æ¥¤ãà ¤¥«¥¨ï (16bit)
|
||
;<3B> ¢å®¤: BC/DE
|
||
;<3B> ¢ë室:BC-१ã«ìâ â
|
||
; HL-®áâ ⮪
|
||
Divis16X16 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
|
||
|
||
;<3B>à®æ¥¤ãà ¤¥«¥¨ï (24x16bit)
|
||
;<3B> ¢å®¤: H+L+C/DE
|
||
;<3B> ¢ë室:A -१ã«ìâ â
|
||
; HL-®áâ ⮪
|
||
Divis24X16 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
|
||
|
||
;<3B>à®æ¥¤ãà ¤¥«¥¨ï 32/16bit=16bit
|
||
;<3B> ¢å®¤: HL+DE/BC
|
||
;<3B> ¢ë室:DE-१ã«ìâ â
|
||
; HL-®áâ ⮪
|
||
Divis32X16 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
|
||
|
||
;<3B>à®æ¥¤ãà ¤¥«¥¨ï 32/16bit=32bit
|
||
;<3B> ¢å®¤: HL+DE/BC
|
||
;<3B> ¢ë室:HL+DE-१ã«ìâ â
|
||
; BC-®áâ ⮪
|
||
Divis32 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> ¢å®¤:
|
||
; A:BC:HL - ç¨á«® 40 ¡¨â
|
||
; DE - ¡ãä¥à
|
||
ConvNumTxt40: 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> ¢å®¤:
|
||
; BC+HL - ç¨á«® 32 ¡¨â
|
||
; DE - ¡ãä¥à
|
||
ConvNumTxt32 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¡¨â ¢ ⥪áâ
|
||
;<3B> ¢å®¤:
|
||
; HL - ç¨á«® 16 ¡¨â
|
||
; DE - ¡ãä¥à
|
||
ConvNumTxt16 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¡¨â ¢ ⥪áâ
|
||
;<3B> ¢å®¤:
|
||
; A - ç¨á«® 8 ¡¨â
|
||
; DE - ¡ãä¥à
|
||
ConvNumTxt8 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 ¡¨â
|
||
;<3B> ¢å®¤:
|
||
; DE - ⥪áâ
|
||
;<3B> ¢ë室:
|
||
; HL+IX - ç¨á«®
|
||
; CY - ®è¨¡ª
|
||
ConvTxtNum32 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 ¡¨â
|
||
;<3B> ¢å®¤:
|
||
; DE - ⥪áâ
|
||
;<3B> ¢ë室:
|
||
; HL - ç¨á«®
|
||
; CY - ®è¨¡ª
|
||
ConvTxtNum16 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
|
||
|
||
;[]-----------------------------------------------------------[]
|
||
MoveBytes 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
|
||
|
||
MoveBytesUp 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
|
||
|
||
;[]----------------------------------------------------------[]
|
||
Resident LD (ResCall),DE
|
||
IN B,(C)
|
||
PUSH BC
|
||
OUT (C),A
|
||
CALL 0x0000
|
||
ResCall EQU $-2
|
||
POP BC
|
||
OUT (C),B
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
; Š®ª ⥠æ¨ï áâப¨. „®¡ ¢«ï¥âáï áâப ¨§ hl ¢ ª®¥æ áâப¨ ¢ de. <20>ã«ì ª®¯¨àã¥âáï ⮦¥.
|
||
; (hl) -> (de)
|
||
ConcatString: 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)
|
||
CopyString: ld a,(hl)
|
||
ldi
|
||
or a
|
||
jr nz,CopyString
|
||
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
|
||
;[]----------------------------------------------------------[]
|
||
CompareStrings: ld a,(de)
|
||
cp (hl)
|
||
ret nz
|
||
inc hl
|
||
inc de
|
||
ld a,(hl)
|
||
or a
|
||
jr nz,CompareStrings ; ®¡à §¥æ ¥ § ª®ç¥
|
||
ld a,(de)
|
||
cp (hl)
|
||
ret
|
||
|
||
;<3B>®¨áª ª®æ á«®¢ ¨«¨ áâப¨
|
||
;> 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
|
||
|
||
;[]----------------------------------------------------------[]
|
||
SetCMOSPrint: EX AF,AF'
|
||
LD (CMOSposXT),HL
|
||
LD (CMOSposYT),DE
|
||
LD A,B
|
||
LD (CMOSColorT),A
|
||
SUB A
|
||
LD L,A
|
||
LD H,A
|
||
LD (CMOSPrint),A
|
||
LD (CMOSTime),HL
|
||
LD (CMOSTime+2),A
|
||
LD (CMOSData),HL
|
||
LD (CMOSData+2),A
|
||
LD HL,CMOSTimeT
|
||
LD DE,CMOSDataT
|
||
LD A,'0'
|
||
LD B,0x03
|
||
.L1 LD (HL),A
|
||
INC HL
|
||
LD (HL),A
|
||
INC HL
|
||
INC HL
|
||
LD (DE),A
|
||
INC DE
|
||
LD (DE),A
|
||
INC DE
|
||
INC DE
|
||
DJNZ .L1
|
||
EX AF,AF'
|
||
LD (CMOSOut),A
|
||
OR A
|
||
JR Z,TestCMOS
|
||
EXX
|
||
LD (CMOSposXD),HL
|
||
LD (CMOSposYD),DE
|
||
LD A,B
|
||
LD (CMOSColorD),A
|
||
EXX
|
||
JR TestCMOS
|
||
|
||
ResCMOSPrint: LD A,0x01
|
||
LD (CMOSPrint),A
|
||
RET
|
||
|
||
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
|
||
EX DE,HL
|
||
LD HL,(CMOSTime)
|
||
OR A
|
||
SBC HL,DE
|
||
JR NZ,PrnCMOSTime
|
||
LD A,(CMOSTime+2)
|
||
CP B
|
||
JR Z,TCMOS1
|
||
PrnCMOSTime: EX DE,HL
|
||
LD (CMOSTime),HL
|
||
LD A,B
|
||
LD (CMOSTime+2),A
|
||
LD DE,CMOSTimeT
|
||
LD A,H
|
||
CALL GetCMOS
|
||
INC DE
|
||
LD A,L
|
||
CALL GetCMOS
|
||
INC DE
|
||
LD A,(CMOSTime+2)
|
||
CALL GetCMOS
|
||
LD HL,CMOSTimeT
|
||
LD DE,(CMOSposXT)
|
||
LD BC,(CMOSposYT)
|
||
LD A,(CMOSColorT)
|
||
CALL PrnTxtLnIFF
|
||
TCMOS1 POP IX
|
||
POP DE
|
||
LD A,(CMOSOut)
|
||
OR A
|
||
JP Z,TCMOSex
|
||
PUSH IX
|
||
POP HL
|
||
LD BC,1900
|
||
OR A
|
||
SBC HL,BC
|
||
LD B,L
|
||
LD HL,(CMOSData)
|
||
OR A
|
||
SBC HL,DE
|
||
JR NZ,PrnCMOSData
|
||
LD A,(CMOSData+2)
|
||
CP B
|
||
JP Z,TCMOSex
|
||
PrnCMOSData EX DE,HL
|
||
LD (CMOSData),HL
|
||
LD A,B
|
||
LD (CMOSData+2),A
|
||
LD DE,CMOSDataT
|
||
LD A,H
|
||
CALL GetCMOS
|
||
INC DE
|
||
LD A,L
|
||
CALL GetCMOS
|
||
INC DE
|
||
LD A,(CMOSData+2)
|
||
CALL GetCMOS
|
||
LD A,(CMOSOut)
|
||
DEC A
|
||
JR NZ,TCMOS2
|
||
LD HL,CMOSDataT
|
||
LD DE,(CMOSposXD)
|
||
LD BC,(CMOSposYD)
|
||
LD A,(CMOSColorD)
|
||
CALL PrnTxtLnIFF
|
||
JR TCMOSex
|
||
|
||
TCMOS2 LD DE,CMOSDataT1
|
||
LD A,H
|
||
CALL ConvNumTxt8
|
||
LD A,' '
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,L
|
||
DEC A
|
||
ADD A,A
|
||
LD L,A
|
||
ADD A,A
|
||
ADD A,L
|
||
LD HL,Month
|
||
ADD A,L
|
||
LD L,A
|
||
JR NC,.L1
|
||
INC H
|
||
.L1 LD A,' '
|
||
.L2 LDI
|
||
CP (HL)
|
||
JR NZ,.L2
|
||
LD (DE),A
|
||
INC DE
|
||
PUSH IX
|
||
POP HL
|
||
CALL ConvNumTxt16
|
||
SUB A
|
||
LD (DE),A
|
||
LD HL,(CMOSposXD)
|
||
LD (CMOSclX),HL
|
||
LD HL,(CMOSposYD)
|
||
LD (CMOSclY),HL
|
||
LD A,(CMOSColorD)
|
||
AND 0xF0
|
||
RRCA
|
||
RRCA
|
||
RRCA
|
||
RRCA
|
||
LD (CMOScol),A
|
||
MAKEWINDOW WINSUBOBJ.WOBIND
|
||
W_FILL 0,0,76,8,COLORI.BLACK
|
||
W_END
|
||
CMOSclX EQU $ - 10
|
||
CMOSclY EQU $ - 8
|
||
CMOScol EQU $ - 2
|
||
LD HL,CMOSDataT1
|
||
LD DE,(CMOSposXD)
|
||
LD BC,(CMOSposYD)
|
||
LD A,(CMOSColorD)
|
||
CALL PrnTxtLnIFF
|
||
TCMOSex POP IX
|
||
RET
|
||
|
||
;CMOSPrint: DB 0x01
|
||
CMOSOut: DB 0
|
||
CMOSposXT: DW 0
|
||
CMOSposYT: DW 0
|
||
CMOSColorT: DB 0
|
||
CMOSTime: DB 3 DUP 0
|
||
CMOSTimeT: DB "00:00:00",0
|
||
CMOSposXD: DW 0
|
||
CMOSposYD: DW 0
|
||
CMOSColorD: DB 0
|
||
CMOSData: DB 3 DUP 0
|
||
CMOSDataT: DB "00/00/00",0
|
||
CMOSDataT1: DB 14 DUP ' '
|
||
|
||
GetCMOS: EX DE,HL
|
||
LD BC,(('0' - 1) << 8) | 10;0x2F0A
|
||
.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
|
||
|
||
Month: DB "Jan "
|
||
DB "Febr "
|
||
DB "March "
|
||
DB "Apr "
|
||
DB "May "
|
||
DB "June "
|
||
DB "July "
|
||
DB "Aug "
|
||
DB "Sept "
|
||
DB "Oct "
|
||
DB "Nov "
|
||
DB "Dec "
|
||
|
||
;[]----------------------------------------------------------[]
|
||
SetClock: 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;ClockBMP
|
||
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
|
||
|
||
SetMouse 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;MouseBMP
|
||
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
|