Calendar - for "REAL" programmers: Difference between revisions
Content added Content deleted
(Added X86 Assembly) |
(Added Vedit macro language) |
||
Line 1,030: | Line 1,030: | ||
20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28 |
20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28 |
||
27 28 29 30 31 24 25 26 27 28 29 30 29 30 31 |
27 28 29 30 31 24 25 26 27 28 29 30 29 30 31 |
||
</pre> |
|||
=={{header|Vedit macro language}}== |
|||
In [[Calendar]] task, standard calendar.vdm macro was called to draw one month calendar. |
|||
The version here is stand-alone and contains subroutine DRAW_CALENDAR to draw one month calendar. |
|||
In addition, short commands are used here. (Normally, long versions of command words are used in RC tasks for readability.) |
|||
Vedit macro language is case insensitive, but it is normal practice to write short commands in upper case. |
|||
<lang vedit>BS(BF) |
|||
CFT(22) |
|||
#3 = 6 // NUMBER OF MONTHS PER LINE |
|||
#2 = 1969 // YEAR |
|||
#1 = 1 // STARTING MONTH |
|||
IC(' ', COUNT, #3*9) IT("[SNOOPY]") IN(2) |
|||
IC(' ', COUNT, #3*9+1) NI(#2) IN |
|||
REPEAT(12/#3) { |
|||
REPEAT (#3) { |
|||
BS(BF) |
|||
CALL("DRAW_CALENDAR") |
|||
RCB(10, 1, EOB_POS, COLSET, 1, 21) |
|||
BQ(OK) |
|||
#5 = CP |
|||
RI(10) |
|||
GP(#5) |
|||
EOL IC(9) |
|||
#1++ |
|||
} |
|||
EOF IN(2) |
|||
} |
|||
RETURN |
|||
:DRAW_CALENDAR: |
|||
NUM_PUSH(4,20) |
|||
#20 = RF |
|||
BOF DC(ALL) |
|||
NI(#1, LEFT+NOCR) IT("/1/") NI(#2, LEFT+NOCR) |
|||
RCB(#20, BOL_POS, EOL_POS, DELETE) |
|||
#10 = JDATE(@(#20)) |
|||
#4 = #2+(#1==12) |
|||
NI(#1%12+1, LEFT+NOCR) IT("/1/") NI(#4, LEFT+NOCR) |
|||
RCB(#20, BOL_POS, CP, DELETE) |
|||
#11 = JDATE(@(#20)) - #10 |
|||
#12 = JDATE() |
|||
#7 = (#10-1) % 7 |
|||
IF (#1==1) { RS(#20," JANUARY ") } |
|||
IF (#1==2) { RS(#20," FEBRUARY") } |
|||
IF (#1==3) { RS(#20," MARCH ") } |
|||
IF (#1==4) { RS(#20," APRIL ") } |
|||
IF (#1==5) { RS(#20," MAY ") } |
|||
IF (#1==6) { RS(#20," JUNE ") } |
|||
IF (#1==7) { RS(#20," JULY ") } |
|||
IF (#1==8) { RS(#20," AUGUST ") } |
|||
IF (#1==9) { RS(#20,"SEPTEMBER") } |
|||
IF (#1==10) { RS(#20," OCTOBER ") } |
|||
IF (#1==11) { RS(#20," NOVEMBER") } |
|||
IF (#1==12) { RS(#20," DECEMBER") } |
|||
IT(" ") RI(#20) IN |
|||
IT(" MO TU WE TH FR SA SU") IN |
|||
IT(" --------------------") IN |
|||
IC(' ', COUNT, #7*3) |
|||
#6 = 0 |
|||
FOR (#8 = 1; #8 <= #11; #8++) { |
|||
NI(#8, COUNT, 3) |
|||
IF (#8+#10-1 == #12) { #6 = CP } |
|||
#5 = (#8+#10+6-1) % 7 |
|||
IF (#5 == 6) { IN } |
|||
} |
|||
IT(" ") |
|||
REG_EMPTY(#20) |
|||
NUM_POP(4,20) |
|||
RETURN </lang> |
|||
<pre> |
|||
[SNOOPY] |
|||
1969 |
|||
JANUARY FEBRUARY MARCH APRIL MAY JUNE |
|||
MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU |
|||
-------------------- -------------------- -------------------- -------------------- -------------------- -------------------- |
|||
1 2 3 4 5 1 2 1 2 1 2 3 4 5 6 1 2 3 4 1 |
|||
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9 7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8 |
|||
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16 14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15 |
|||
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23 21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22 |
|||
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30 28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29 |
|||
31 30 |
|||
JULY AUGUST SEPTEMBER OCTOBER NOVEMBER DECEMBER |
|||
MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU |
|||
-------------------- -------------------- -------------------- -------------------- -------------------- -------------------- |
|||
1 2 3 4 5 6 1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 1 2 1 2 3 4 5 6 7 |
|||
7 8 9 10 11 12 13 4 5 6 7 8 9 10 8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14 |
|||
14 15 16 17 18 19 20 11 12 13 14 15 16 17 15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21 |
|||
21 22 23 24 25 26 27 18 19 20 21 22 23 24 22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28 |
|||
28 29 30 31 25 26 27 28 29 30 31 29 30 27 28 29 30 31 24 25 26 27 28 29 30 29 30 31 |
|||
</pre> |
</pre> |
||