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 >
Wrap
Text File
|
2004-06-27
|
4KB
|
79 lines
TIME (V30,V31,V32) ; Get TIME from System clock EG. 8,20,35
TOASCII (V30,2,S1) ; Turn Hours into 2 Characters EG. "08"
TOASCII (V31,2,S2) ; Turn Mins into 2 Characters EG. "20"
TOASCII (V32,2,S3) ; ***Turn Secs into 2 Characters EG. "35"
ADDSTR (S3,S2) ; *** Add Secs Chars' to Mins EG. "2035"
ADDSTR (S2,S1) ; Add Mins/Secs Chars' to Hours EG. "082035"
FOR (V33,1,4) ; Loop 4 times (Once for each clock Digit)
SETVAR (V33,V34) ; Set pointer to Object No of first Digit-
ADDVAR (2,V34) ; Top Pyramid.
SETVAR (V34,V35) ; Set pointer for Bottom Pyramid
ADDVAR (4,V35) ; = Top Pyramid + No of Digits.
MIDSTR (S1,V33,V33,S4) ; Get individual Char'EG. "0" then "8" etc
FROMASCII (S4,V36) ; Turn Char' into a No EG. "0" = 0
IF VAREQ? (1,V36) ;\
THEN ; \
SETVAR (16,V37) ; \ Lines marked *** are not needed but
SETVAR (16,V38) ; | have been left in as example.
ENDIF ; |
IF VAREQ? (2,V36) ; |
THEN ; |
SETVAR (22,V37) ; | __________
SETVAR (14,V38) ; | |\ 2 /| 7 Segment Display
ENDIF ; | | \----/ | made from 2 Pyramids
IF VAREQ? (3,V36) ; | |3| |4|
THEN ; | | / ---\ | The facets are set to On
SETVAR (22,V37) ; | |/__1___\| if the relevant Bit is SET
SETVAR (22,V38) ; | ________
ENDIF ; | |\ 2 /| BIT No 4 3 2 1 0
IF VAREQ? (4,V36) ; | | \----/ | Value 16 8 4 2 1
THEN ; | |3| |4|
SETVAR (26,V37) ; | | / ---\ | EG.To turn On all facets 1-4
SETVAR (20,V38) ; | |/__1___\| = 16+8+4+2
ENDIF ; | = 30
IF VAREQ? (5,V36) ; |
THEN ; |
SETVAR (14,V37) ; } Set code to switch relevent facets
SETVAR (22,V38) ; | of Top + Bottom Pyramids ON/OFF
ENDIF ; | EG. 0 = 28 for Top Pyramid
IF VAREQ? (6,V36) ; | = facets 4,3,2 set to ON
THEN ; | = 26 for Bottom Pyramid
SETVAR (14,V37) ; | = facets 4,3,1 set to ON
SETVAR (30,V38) ; |
ENDIF ; | Thus :-
IF VAREQ? (7,V36) ; |
THEN ; | 22222222
SETVAR (20,V37) ; | 3 4
SETVAR (16,V38) ; | 3 4
ENDIF ; |
IF VAREQ? (8,V36) ; |
THEN ; | 3 4
SETVAR (30,V37) ; | 3 4
SETVAR (30,V38) ; | 11111111
ENDIF ; |
IF VAREQ? (9,V36) ; |
THEN ; |
SETVAR (30,V37) ; |
SETVAR (20,V38) ; |
ENDIF ; |
IF VAREQ? (0,V36) ; |
THEN ; |
SETVAR (28,V37) ; /
SETVAR (26,V38) ; /
ENDIF ;/
FOR (V39,1,4) ; Loop 4 times (once for each segment/facet)
IF BITSET? (V39,V37) ; Check code to test if segment is ON
THEN ; If so
SETOBJCOL (8,V39,V34) ; Colour facet on Top Pyramid
ELSE ; If not
SETOBJCOL (0,V39,V34) ; Make facet invisable
ENDIF ;
IF BITSET? (V39,V38) ; Repeat for Bottom Pyramid
THEN ;
SETOBJCOL (8,V39,V35) ;
ELSE ;
SETOBJCOL (0,V39,V35) ;
ENDIF ;
NEXT ; Loop back for next segment
NEXT ; Loop back for next Digit