home *** CD-ROM | disk | FTP | other *** search
- ;date.asm
- ;---------------------------
- ; Command: date dd,mm,yyyy
- ;---------------------------
-
- imparm = $00ce ; temp
- poker = $0016 ; result of int11
- int11 = $1711 ; evaluate constant (parameter number .x)
- int0e = $170e ; program terminate
- int14 = $1714 ; set system date
- int15 = $1715 ; print system date
-
- star = $0b00
- .wor star
- * = star
-
- jmp date
- dw Date
-
- sder clc ; just get date
- jsr int14
- pdate jsr int15 ; and print it
- jmp int0e
-
- date ldx #1
- jsr int11 ; get day
- bcs sder ; not there.. print date
- cmp #0 ; high byte must be zero
- bne sder
- cpx #0 ; day=0 not allowed
- beq sder
- cpx #32 ; day>31 not allowed
- bcs sder
- txa
- asl a
- asl a
- asl a
- sta imparm
- ldx #2
- jsr int11 ; get month
- bcs sder ; not there
- cmp #0
- bne sder
- cpx #0
- beq sder
- cpx #13
- bcs sder
- txa
- lsr a
- ror imparm
- lsr a
- ror imparm
- lsr a
- ror imparm
- sta imparm+1
- ldx #3 ; finally get year
- jsr int11
- cmp #0 ; is high byte zero?
- bne date1 ; no assume 4 digits
- cmp #100 ; <100
- bcs date1
- pha ; 0-99...add 1900
- txa
- adc #<1900
- sta poker
- pla
- adc #>1900
- sta poker+1
- date1 sec
- lda poker
- sbc #<1980
- sta poker
- lda poker+1
- sbc #>1980
- bne sder ; too big
- bcc sder ; too small
- lda poker
- asl a
- ora imparm+1
- tay
- ldx imparm
- sec
- jsr int14
- jmp pdate
-
- .end
-