home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
ENTERPRS
/
CPM
/
UTILS
/
A
/
ARC20.ARC
/
ARCMACS.ARC
/
CPMDATE.MAC
< prev
next >
Wrap
Text File
|
1989-11-03
|
2KB
|
68 lines
; CPMDATE for Turbo-ARC, TR 031189
.z80
extrn inarray,datout,timout
; Inarray (5 Byte) : date (2), hour, minute, second
; Datout (3 Byte) : day, month, year
; Timout (3 Byte) : hour, minute, second
ld ix,(inarray) ; ^Inarray
ld iy,(datout) ; ^Datout
ld l,(ix)
ld h,(ix+1) ; HL = Datum (Word)
ld de,365
ld b,00100010b ; Bitmaske erzeugt CARRY bei Schaltjahr
ld a,78 ; Anzahl Tage ab 1978
cyloop: rlc b
sbc hl,de ; 365 bzw. 366 abziehen
jr c,cyexit
jr z,cyexit ; bis negativ oder null
inc a ; Jahr inc.
jr cyloop
cyexit: rrc b
adc hl,de ; Tageszahl korrigieren
ld (iy+2),a ; Jahr speichern
bit 7,b ; in B noch Schaltjahr-Maske
ld de,dnosw
jr z,nosw
ld de,dsw ; DE mit Zeiger auf entspr. Tabelle laden
nosw: ld a,1
ld b,0 ; High-Byte f}r Subtraktion immer 0
cmloop: ex de,hl
ld c,(hl) ; Tageszahl des entspr. Monats lesen
inc hl
ex de,hl
or a
sbc hl,bc ; und von Gesamtzahl abziehen
jr c,cmexit
jr z,cmexit ; bis 0 oder negativ
inc a ; Monat inkrementieren
jr cmloop
cmexit: add hl,bc ; Korrekturaddition
ld (iy+1),a ; Monat speichern
ld (iy),l ; Tage speichern (Rest)
ld hl,(timout) ; ^Timout
ld b,3
timlp: ld d,(ix+2) ; BCD-Wert
ld a,d
and 0Fh
ld e,a ; Einer in E
ld a,d
sub e
rrca
rrca
add a,d
add a,e
rra ; BCD ---> bin{r
ld (hl),a ; Wert speichern
inc ix
inc hl
djnz timlp ; alle 3 Werte BCD-bin{r
ret
dnosw: defb 31,28,31,30,31,30,31,31,30,31,30,31
dsw: defb 31,29,31,30,31,30,31,31,30,31,30,31
end