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 / SIMTEL / CPMUG / CPMUG042.ARK / START.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  5KB  |  94 lines

  1. ;**********************************************************************
  2. ;* -START.COM-                                                        *
  3. ;*                                                                    *
  4. ;* A PROGRAM TO INITIONALIZE AN ISC 8001G COLOR TERMINAL,             *
  5. ;* AND READ COMPU/TIME T102A TIME AND DATE BOARD AND THEN DISPLAY IT. *
  6. ;*                                                                    *
  7. ;* BY HARRY KAEMMERER 11/30/1979 TEL. (201)-221-2297                  *
  8. ;**********************************************************************
  9.                                   ;
  10. FG      EQU     1DH               ;SELECT FORGROUND COLOR
  11. YELLOW  EQU     13H               ;COLOR IS YELLOW
  12. BG      EQU     1EH               ;SELECT BACKGROUND COLOR
  13. BLUE    EQU     14H               ;COLOR IS BLUE
  14. ESC     EQU     1BH               ;ESC KEY CODE
  15. FF      EQU     0CH               ;FORM FEED CLEARS SCREEN
  16. BELL    EQU     07H               ;RING BELL
  17. ENTRY   EQU     05H               ;TALK TO CP/M
  18. CR      EQU     0DH               ;CARRAGE RETURN
  19. LF      EQU     0AH               ;LINE FEED
  20. A7OFF   EQU     0FH               ;SETS TERMINAL TO 48 LINE FORMAT
  21.                                   ;
  22. CLOCK   EQU     0C0H              ;MY CLOCKS ADDRESS PORT CHANGE AS NEEDED
  23.                                   ;  
  24.         ORG     0100H             ;START ASSEMBLY HERE
  25.                                   ;
  26.         LXI     H,0               ;SET UP REGISTERS
  27.         DAD     SP                ;AND STACK POINTER
  28.         SHLD    OLDSP             ;WILE DUING IT SAVE THE OLD ONE
  29.         LXI     SP,STACK          ;AND SET A NEW ONE FOR THIS PGM
  30.                                   ;
  31.         LXI     H,LABEL1+16       ;POINT TO FIRST TIME MEM. LOCATION
  32.         MVI     A,0               ;TELL CLOCK YOU WANT TEN'S OF HR'S
  33.         CALL    GETDIG            ;GET IT AND PUT IT IN MEM. FOR LATER USE
  34.         MVI     A,1               ;SAME FOR UNIT' HR'S
  35.         CALL    GETDIG            ;GET IT AND SAVE IT
  36.         INX     H                 ;SKIP ':' WE DONT WHANT TO MESS IT UP!!
  37.         MVI     A,2               ;SAME FOR MINTES TENS
  38.         CALL    GETDIG            ;GET IT
  39.         MVI     A,3               ;MIN UNITS
  40.         CALL    GETDIG            ;YOU GOT IT .. GET IT AND SAVE AS ABOVE
  41.         INX     H                 ;SKIP ':'
  42.         MVI     A,4               ;NOW THE SECOND'S
  43.         CALL    GETDIG            ;
  44.         MVI     A,5               ;
  45.         CALL    GETDIG            ;
  46.         LXI     H,LABEL1+31       ;SET POINTER TO DATE LOCATIONS
  47.         MVI     A,8               ;SET FOR MONTH TENS
  48.         OUT     CLOCK             ;SEND IT TO THE CLOCKS PORT
  49.         CALL    DELAY             ;WAIST SOME TIME
  50.         IN      CLOCK             ;GET THE DIGIT FROM THE CLOCK
  51.         ANI     0FH               ;CLEAR SOME BITS
  52.         ADI     48                ;MAKE IT ASCII
  53.         CPI     63                ;SEE IF IT SHOULD BE A BLANK?
  54.         CZ      SET1              ;IF SO THEN MAKE IT A BLANK
  55.         MOV     M,A               ;ELSE SEND IT TO ITS MEM. LOCATION
  56.         MVI     A,9               ;THIS IS FOR MONTH UNITS
  57.         CALL    GETDIG            ;SAME THING AS IN TIME
  58.         INX     H                 ;SKIP '/'
  59.         MVI     A,10              ;DAY TENS
  60.         CALL    GETDIG            ;GET IT
  61.         MVI     A,11              ;DAY UNITS
  62.         CALL    GETDIG            ;GET IT
  63.         LXI     H,LABEL1          ;POINT TO START OF MESSAGE
  64.                                   ;
  65.         LXI     D,LABEL1          ;TELL CP/M START OF MESSAGE
  66.         MVI     C,9               ;SEND IT TO THE TERMINAL
  67.         CALL    ENTRY             ;DO IT
  68.         LHLD    OLDSP             ;PUT THE OLD CP/M STACK POINTER
  69.         SPHL                      ;WHERE IT BELONGS
  70.         RET                       ;AND EXIT THE PROGRAM
  71.                                   ;
  72. SET1    MVI     A,20H             ;SET UP A BLANK FOR THE MONTH TENS DIGIT
  73.         RET                       ;
  74. GETDIG  OUT     CLOCK             ;SEND SELECT CHARACTER TO THE CLOCK
  75.         CALL    DELAY             ;WAIST SOME TIME
  76.         IN      CLOCK             ;GET THE CLOCKS OUTPUT
  77.         ANI     0FH               ;CLEAR SOME BITS
  78.         ADI     48                ;MAKE IT ASCII
  79.         INX     H                 ;POINT TO NEXT MEMORY LOCATION
  80.         MOV     M,A               ;PUT IT THERE
  81.         RET                       ;
  82. DELAY   LXI     D,02FFH           ;DELAY CONSTANT
  83. WAIT1   DCR     E                 ;WAIST SOME TIME
  84.         JNZ     WAIT1             ;
  85.         DCR     D                 ;
  86.         JNZ     WAIT1             ;SEE IF YOU ARE DONE IF SO
  87.         RET                       ;RETURN
  88. LABEL1  DB      FG,YELLOW,BG,BLUE,ESC,'K',A7OFF,ESC,'F',FF,BELL
  89.         DB      CR,'TIME HH:MM:SS DATE MM/DD/1980',CR,LF,'$'
  90.         DS      29
  91. OLDSP   DS      2
  92.         DS      100H
  93. STACK   DB      0
  94.