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
  121. è        CALL    COUT            ;PRINT UNIT HOUR
  122.     MVI    A,COLON
  123.     CALL     COUT
  124.  
  125. MIN10:    MVI     A,51            ;ASK FOR DECADE MINUTES
  126.         OUT     CLK
  127.         NOP
  128.         NOP
  129.         IN      CLK+1           ;GET DECADE MINUTES
  130.     ANI    07H        ;NOT OVER 6
  131.     CALL     HEX1
  132.         CALL     COUT
  133.  
  134. MIN1:    MVI     A,50        ;ASK FOR UNIT MINUTES
  135.         OUT     CLK
  136.         NOP
  137.         NOP
  138.         IN      CLK+1        ;GET UNIT MINUTES
  139.     CALL    HEX1
  140.     CALL    COUT
  141.     MVI    A,COLON
  142.     CALL    COUT
  143.  
  144. SEC10:    MVI     A,49            ;ASK FOR DECADE SECONDS
  145.         OUT     CLK
  146.         NOP
  147.         NOP
  148.         IN      CLK+1           ;GET DECADE SECONDS
  149.     ANI    07H
  150.     CALL     HEX1
  151.         CALL     COUT
  152.  
  153. SEC1:    MVI     A,48        ;ASK FOR UNIT SECONDS
  154.         OUT     CLK
  155.         NOP
  156.         NOP
  157.         IN      CLK+1
  158.     CALL    HEX1
  159.     CALL    COUT
  160.  
  161.     MVI    A,00        ;RELEASE CLOCK HOLD
  162.     OUT    CLK
  163.     RET
  164.  
  165. HEX1:    ANI    0FH    ; MASK OUT HIGH
  166.     ADI    '0'    ; CONVERT 0-9 TO '0'-'9'
  167.         RET
  168.     
  169. PRCSP:    MVI    A,COMMA     ;PRINT COMMA
  170.     CALL    COUT
  171. è    MVI    A,SPACE        ;PRINT SPACE
  172.         CALL    COUT
  173.     RET
  174.  
  175. *  PRINT STRING ENDING IN 0 PTED TO BY (HL)
  176. PRINT:
  177.     MOV    A,M    ; GET BYTE
  178.     INX    H    ; PT TO NEXT
  179.     ORA    A    ; DONE?
  180.         RZ
  181.     CALL    COUT    ; PRINT IT
  182.     JMP    PRINT
  183.  
  184. *  PRINT CHAR IN REG A ON CONSOLE
  185. COUT:    PUSH    H    ; SAVE REGS
  186.     PUSH    D
  187.     PUSH    B
  188.     MOV    E,A
  189.     MVI    C,2    ; CONSOLE OUTPUT
  190.     CALL    BDOS
  191.     POP    B    ; RESTORE REGS
  192.     POP    D
  193.     POP    H
  194.     RET
  195.  
  196. DELAY:  DCR    C
  197.     JNZ    DELAY
  198.     RET
  199.  
  200. MONTH:    DB    'Jan',0
  201.     DB     'Feb',0
  202.     DB    'Mar',0
  203.     DB    'Apr',0
  204.     DB    'May',0
  205.     DB    'Jun',0
  206.     DB    'Jul',0
  207.     DB    'Aug',0
  208.     DB    'Sep',0
  209.     DB    'Oct',0
  210.     DB    'Nov',0
  211.     DB    'Dec',0
  212.  
  213.     END
  214.