home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 12: Textmags & Docs / nf_archive_12.iso / MAGS / TEXTMAGS / 3RD_DIM / 3RDDM18.MSA / ROUTINES / 4DGTHOUR.DOC next >
Text File  |  2004-06-27  |  4KB  |  79 lines

  1. TIME (V30,V31,V32)       ; Get TIME from System clock   EG. 8,20,35
  2. TOASCII (V30,2,S1)       ; Turn Hours into 2 Characters EG. "08"
  3. TOASCII (V31,2,S2)       ; Turn Mins into 2 Characters  EG. "20"
  4. TOASCII (V32,2,S3)       ; ***Turn Secs into 2 Characters  EG. "35"
  5. ADDSTR (S3,S2)           ; *** Add Secs Chars' to Mins  EG. "2035"
  6. ADDSTR (S2,S1)           ; Add Mins/Secs Chars' to Hours EG. "082035"
  7. FOR (V33,1,4)            ; Loop 4 times (Once for each clock Digit)
  8.  SETVAR (V33,V34)        ;  Set pointer to Object No of first Digit- 
  9.  ADDVAR (2,V34)          ;  Top Pyramid.
  10.  SETVAR (V34,V35)        ;  Set pointer for Bottom Pyramid
  11.  ADDVAR (4,V35)          ;   = Top Pyramid + No of Digits.
  12.  MIDSTR (S1,V33,V33,S4)  ;  Get individual Char'EG. "0" then "8" etc
  13.  FROMASCII (S4,V36)      ;  Turn Char' into a No EG. "0" = 0
  14.  IF  VAREQ? (1,V36)      ;\
  15.  THEN                    ; \
  16.   SETVAR (16,V37)        ;  \     Lines marked *** are not needed but
  17.   SETVAR (16,V38)        ;  |     have been left in as example.  
  18.  ENDIF                   ;  |      
  19.  IF  VAREQ? (2,V36)      ;  |
  20.  THEN                    ;  |
  21.   SETVAR (22,V37)        ;  |   __________
  22.   SETVAR (14,V38)        ;  |   |\  2   /|    7 Segment Display
  23.  ENDIF                   ;  |   | \----/ |    made from 2 Pyramids
  24.  IF  VAREQ? (3,V36)      ;  |   |3|    |4|
  25.  THEN                    ;  |   | / ---\ |  The facets are set to On
  26.   SETVAR (22,V37)        ;  |   |/__1___\|  if the relevant Bit is SET
  27.   SETVAR (22,V38)        ;  |    ________
  28.  ENDIF                   ;  |   |\  2   /|  BIT No 4 3 2 1 0
  29.  IF  VAREQ? (4,V36)      ;  |   | \----/ |  Value 16 8 4 2 1
  30.  THEN                    ;  |   |3|    |4|  
  31.   SETVAR (26,V37)        ;  |   | / ---\ |  EG.To turn On all facets 1-4
  32.   SETVAR (20,V38)        ;  |   |/__1___\|      = 16+8+4+2
  33.  ENDIF                   ;  |                   = 30
  34.  IF  VAREQ? (5,V36)      ;  |
  35.  THEN                    ;  |
  36.   SETVAR (14,V37)        ;   } Set code to switch relevent facets
  37.   SETVAR (22,V38)        ;  |  of Top + Bottom Pyramids ON/OFF
  38.  ENDIF                   ;  |  EG. 0 = 28 for Top Pyramid
  39.  IF  VAREQ? (6,V36)      ;  |        = facets 4,3,2 set to ON
  40.  THEN                    ;  |        = 26 for Bottom Pyramid  
  41.   SETVAR (14,V37)        ;  |        = facets 4,3,1 set to ON
  42.   SETVAR (30,V38)        ;  |  
  43.  ENDIF                   ;  |        Thus :-
  44.  IF  VAREQ? (7,V36)      ;  |
  45.  THEN                    ;  |           22222222
  46.   SETVAR (20,V37)        ;  |           3      4
  47.   SETVAR (16,V38)        ;  |           3      4
  48.  ENDIF                   ;  |           
  49.  IF  VAREQ? (8,V36)      ;  | 
  50.  THEN                    ;  |           3      4
  51.   SETVAR (30,V37)        ;  |           3      4
  52.   SETVAR (30,V38)        ;  |           11111111
  53.  ENDIF                   ;  |
  54.  IF  VAREQ? (9,V36)      ;  |  
  55.  THEN                    ;  |   
  56.   SETVAR (30,V37)        ;  |
  57.   SETVAR (20,V38)        ;  |
  58.  ENDIF                   ;  |
  59.  IF  VAREQ? (0,V36)      ;  |
  60.  THEN                    ;  |
  61.   SETVAR (28,V37)        ;  /
  62.   SETVAR (26,V38)        ; /
  63.  ENDIF                   ;/
  64.  FOR (V39,1,4)           ;  Loop 4 times (once for each segment/facet)
  65.   IF   BITSET? (V39,V37) ;   Check code to test if segment is ON
  66.   THEN                   ;   If so
  67.    SETOBJCOL (8,V39,V34) ;    Colour facet on Top Pyramid
  68.   ELSE                   ;   If not
  69.    SETOBJCOL (0,V39,V34) ;    Make facet invisable
  70.   ENDIF                  ;
  71.   IF   BITSET? (V39,V38) ;    Repeat for Bottom Pyramid
  72.   THEN                   ;
  73.    SETOBJCOL (8,V39,V35) ;
  74.   ELSE                   ;
  75.    SETOBJCOL (0,V39,V35) ;
  76.   ENDIF                  ;
  77.  NEXT                    ;  Loop back for next segment
  78. NEXT                     ; Loop back for next Digit
  79.