home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / enterprs / c128 / text / examples.arc / DATE.A < prev    next >
Encoding:
Text File  |  1989-12-01  |  3.3 KB  |  87 lines

  1. ;date.asm
  2. ;---------------------------
  3. ; Command:  date dd,mm,yyyy
  4. ;---------------------------
  5.                                   
  6. imparm      = $00ce               ; temp
  7. poker       = $0016               ; result of int11
  8. int11       = $1711               ; evaluate constant (parameter number .x)
  9. int0e       = $170e               ; program terminate
  10. int14       = $1714               ; set system date
  11. int15       = $1715               ; print system date
  12.                                   
  13. star        = $0b00               
  14.             .wor star             
  15.             * = star              
  16.                                   
  17.             jmp date
  18.             dw Date
  19.                                   
  20. sder        clc                   ; just get date
  21.             jsr int14             
  22. pdate       jsr int15             ; and print it
  23.             jmp int0e             
  24.                                   
  25. date        ldx #1                
  26.             jsr int11             ; get day
  27.             bcs sder              ; not there.. print date
  28.             cmp #0                ; high byte must be zero
  29.             bne sder              
  30.             cpx #0                ; day=0 not allowed
  31.             beq sder              
  32.             cpx #32               ; day>31 not allowed
  33.             bcs sder              
  34.             txa                   
  35.             asl a                 
  36.             asl a                 
  37.             asl a                 
  38.             sta imparm            
  39.             ldx #2                
  40.             jsr int11             ; get month
  41.             bcs sder              ; not there
  42.             cmp #0                
  43.             bne sder              
  44.             cpx #0                
  45.             beq sder              
  46.             cpx #13               
  47.             bcs sder              
  48.             txa                   
  49.             lsr a                 
  50.             ror imparm            
  51.             lsr a                 
  52.             ror imparm            
  53.             lsr a                 
  54.             ror imparm            
  55.             sta imparm+1          
  56.             ldx #3                ; finally get year
  57.             jsr int11             
  58.             cmp #0                ; is high byte zero?
  59.             bne date1             ; no assume 4 digits
  60.             cmp #100              ; <100
  61.             bcs date1             
  62.             pha                   ; 0-99...add 1900
  63.             txa                   
  64.             adc #<1900            
  65.             sta poker             
  66.             pla                   
  67.             adc #>1900            
  68.             sta poker+1           
  69. date1       sec                   
  70.             lda poker             
  71.             sbc #<1980            
  72.             sta poker             
  73.             lda poker+1           
  74.             sbc #>1980            
  75.             bne sder              ; too big
  76.             bcc sder              ; too small
  77.             lda poker             
  78.             asl a                 
  79.             ora imparm+1          
  80.             tay                   
  81.             ldx imparm            
  82.             sec                   
  83.             jsr int14             
  84.             jmp pdate             
  85.                                   
  86.             .end                  
  87.