home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol147 / tb.asm < prev    next >
Encoding:
Assembly Source File  |  1985-02-10  |  4.8 KB  |  212 lines

  1. ****************************************************************************
  2.  
  3. *         Read the Calendar/clock on the TimEPROMmer Board                 *  
  4. *       from Optronics Technology, POB 81, Pittsford, NY 14534             *
  5. *       by D. Mc Lanahan, POB 17, Marlow, NH 03456, 1 Feb 1983              *
  6. *            3-char month spelled out, week-day omitted               *       
  7.  
  8. ****************************************************************************
  9.  
  10.  
  11. CPM$BASE    EQU    0        ; BASE ADDRESS OF CP/M SYSTEM
  12.     CLK    EQU    40        ; BASE ADDRESS OF TP-100 CLOCK
  13.     BDOS    EQU    CPM$BASE+5    ; ADDRESS OF BDOS ENTRY
  14.     CR    EQU    0DH
  15.     LF    EQU    0AH
  16.         SPACE   EQU     20H
  17.         PERIOD  EQU     2EH
  18.         COMMA   EQU     2CH
  19.     COLON    EQU    3AH
  20.     DLYL    EQU    1        ;DELAY PROBABLY NOT
  21.                     ;NEC, DEP ON OUTPUT
  22.     ORG    CPM$BASE+100H        ;BUAD RATE
  23.  
  24.     MVI     A,10H
  25.     OUT    CLK            ;OUTPUT HOLD BIT
  26.     MVI    A,SPACE
  27.     CALL    COUT
  28.     MVI    A,SPACE
  29.     CALL    COUT
  30.         LXI     B,DLYL
  31.         MVI     A,48
  32.     OUT    CLK    ;OUTPUT HOLD AND READ BITS
  33.     NOP
  34.     NOP
  35.         
  36.  
  37. DA10:   MVI     A,56            ;ASK FOR DECADE DATE
  38.         OUT     CLK
  39.         NOP
  40.         NOP
  41.         IN      CLK+1           ;GET DECADE DATE
  42.     ANI    03H        ;NOT OVER 3
  43.         CALL    HEX1            ;CONVERT TO ASCII
  44.         CALL    COUT            ;PRINT DECADE DATE
  45. DA1:    MVI     A,55            ;ASK FOR UNIT DATE
  46.         OUT     CLK
  47.         NOP
  48.         NOP
  49.         IN      CLK+1           ;GET UNIT DATE
  50.         CALL    HEX1
  51.         CALL    COUT            ;PRINT UNIT DATE
  52.     MVI    A,SPACE
  53.     CALL    COUT
  54.  
  55. MON1:   MVI     A,58            ;ASK FOR DECADE MONTH
  56.         OUT     CLK
  57.         NOP
  58.         NOP
  59.         LXI     D,00            ;CLEAR REGISTER
  60.         IN      CLK+1           ;GET DECADE MONTH    
  61.         ANI    01H        ;KILL HIGH NIBBLE
  62.     JZ      MON2            ;IF DECADE IS ZERO
  63.         MVI    D,10
  64. MON2    MVI     A,57
  65.         OUT     CLK
  66.         NOP
  67.         MVI     H,0
  68.         IN      CLK+1
  69.         ANI     0FH
  70.         ADD     D
  71.         DCR     A              ;0 to 11 from 1 to 12
  72.         ADD    A
  73.         ADD    A
  74.         MOV     L,A
  75.         LXI     D,MONTH
  76.         DAD     D
  77.         CALL    PRINT
  78.     MVI    A,SPACE    
  79.     CALL    COUT
  80.  
  81. YRHD:    MVI    A,31H        ;PRINT 1 <--\
  82.     CALL    COUT        ;change these in 1999
  83.     MVI     A,39H        ;PRINT 9 <--/
  84.     CALL    COUT        ;Don't Forget!! 
  85.  
  86. YR10:    MVI     A,60            ;ASK FOR DECADE YEAR
  87.         OUT     CLK
  88.         NOP
  89.         NOP
  90.         IN      CLK+1           ;GET DECADE YEAR
  91.     CALL     HEX1
  92.         CALL     COUT
  93.  
  94. YR1:    MVI     A,59        ;ASK FOR UNIT YEAR
  95.         OUT     CLK
  96.         NOP
  97.         NOP
  98.         IN      CLK+1        ;GET UNIT YEAR
  99.     CALL    HEX1
  100.     CALL    COUT
  101.     
  102.         CALL    PRCSP
  103.  
  104.         MVI     A,SPACE
  105.         CALL    COUT
  106.  
  107. HR10:   MVI     A,53            ;ASK FOR DECADE HOUR
  108.         OUT     CLK
  109.         NOP
  110.         NOP
  111.         IN      CLK+1           ;GET DECADE HOUR
  112.         ANI     03H        ;NOT OVER 2
  113.         CALL    HEX1            ;CONVERT TO ASCII
  114.         CALL    COUT            ;PRINT DECADE HOUR
  115. HR1:    MVI     A,52            ;ASK FOR UNIT HOUR
  116.         OUT     CLK
  117.         NOP
  118.         NOP
  119.         IN      CLK+1           ;GET UNIT HOUR
  120.         CALL    HEX1è        CALL    COUT            ;PRINT UNIT HOUR
  121.     MVI    A,COLON
  122.     CALL     COUT
  123.  
  124. MIN10:    MVI     A,51            ;ASK FOR DECADE MINUTES
  125.         OUT     CLK
  126.         NOP
  127.         NOP
  128.         IN      CLK+1           ;GET DECADE MINUTES
  129.     ANI    07H        ;NOT OVER 6
  130.     CALL     HEX1
  131.         CALL     COUT
  132.  
  133. MIN1:    MVI     A,50        ;ASK FOR UNIT MINUTES
  134.         OUT     CLK
  135.         NOP
  136.         NOP
  137.         IN      CLK+1        ;GET UNIT MINUTES
  138.     CALL    HEX1
  139.     CALL    COUT
  140.     MVI    A,COLON
  141.     CALL    COUT
  142.  
  143. SEC10:    MVI     A,49            ;ASK FOR DECADE SECONDS
  144.         OUT     CLK
  145.         NOP
  146.         NOP
  147.         IN      CLK+1           ;GET DECADE SECONDS
  148.     ANI    07H
  149.     CALL     HEX1
  150.         CALL     COUT
  151.  
  152. SEC1:    MVI     A,48        ;ASK FOR UNIT SECONDS
  153.         OUT     CLK
  154.         NOP
  155.         NOP
  156.         IN      CLK+1
  157.     CALL    HEX1
  158.     CALL    COUT
  159.  
  160.     MVI    A,00        ;RELEASE CLOCK HOLD
  161.     OUT    CLK
  162.     RET
  163.  
  164. HEX1:    ANI    0FH    ; MASK OUT HIGH
  165.     ADI    '0'    ; CONVERT 0-9 TO '0'-'9'
  166.         RET
  167.     
  168. PRCSP:    MVI    A,COMMA     ;PRINT COMMA
  169.     CALL    COUTè    MVI    A,SPACE        ;PRINT SPACE
  170.         CALL    COUT
  171.     RET
  172.  
  173. *  PRINT STRING ENDING IN 0 PTED TO BY (HL)
  174. PRINT:
  175.     MOV    A,M    ; GET BYTE
  176.     INX    H    ; PT TO NEXT
  177.     ORA    A    ; DONE?
  178.         RZ
  179.     CALL    COUT    ; PRINT IT
  180.     JMP    PRINT
  181.  
  182. *  PRINT CHAR IN REG A ON CONSOLE
  183. COUT:    PUSH    H    ; SAVE REGS
  184.     PUSH    D
  185.     PUSH    B
  186.     MOV    E,A
  187.     MVI    C,2    ; CONSOLE OUTPUT
  188.     CALL    BDOS
  189.     POP    B    ; RESTORE REGS
  190.     POP    D
  191.     POP    H
  192.     RET
  193.  
  194. DELAY:  DCR    C
  195.     JNZ    DELAY
  196.     RET
  197.  
  198. MONTH:    DB    'Jan',0
  199.     DB     'Feb',0
  200.     DB    'Mar',0
  201.     DB    'Apr',0
  202.     DB    'May',0
  203.     DB    'Jun',0
  204.     DB    'Jul',0
  205.     DB    'Aug',0
  206.     DB    'Sep',0
  207.     DB    'Oct',0
  208.     DB    'Nov',0
  209.     DB    'Dec',0
  210.  
  211.     END
  212.