|
Forever Young
#01
21 июля 1998 |
|
Программирование - процедура на Бейсике "КАЛЕНДАРЬ".

================================
░▒▓█ ПРОЦЕДУРКА "КАЛЕНДАРЬ" █▓▒░
================================
* * *
В журнале "ZX-РЕВЮ'97,7/10" бы
ла статья (С) Jеssicа Justicе, в
которой он приводил BASIC-проце-
дуру календаря и предложил "пере
кинуть" её в коды. Так как BASIC
я практически не знаю, а с каль-
кулятором никогда не разбирался,
то написал аналогичную процедур-
ку в кодах, которая не использу-
ет ни калькулятор, ни ПЗУ. Вооб-
ще-то, эту процедурку нельзя наз
вать "изящной", да и длина ( 313
байт без учёта BC и DE ) велико-
вата, зато год можно выбирать от
1 до 65535. На входе: D - месяц,
E - число, BC - год. На выходе в
A - номер дня недели (1 - воскре
сенье, 2 - понедельник, 3 - втор
ник, еtc.). Если нужно знать, яв
ляется ли год високосным, или же
нет,- это можно вычислить, напри
мер, так:
LD BC,#0704
LD A,(YEARS+1)
YEAR0 CP #1B
JR Z,ВИСОКОСНЫЙ
ADD A,C
DJNZ YEAR0
... НЕВИСОКОСНЫЙ
Другими словами, если содержи-
мое (YEARS+1) = 3,7,11,15,19,23,
27, значит год високосный. Учти-
те, что это "современный" кален-
дарь ( и не пугайтесь ;) ...
************************ TOP ***
YEARS LD A,#17
INC A
CP #1C
JR NZ,YEAR1
XOR A
YEAR1 LD (YEARS+1),A
DEC BC
LD A,B
OR C
JR NZ,YEARS
LD HL,TABLE
LD C,D
DEC C
ADD HL,BC
LD C,#0C
LD D,#11
LD A,(YEARS+1)
OR A
JR Z,YEAR2
CP #06
JR Z,YEAR2
CP D
JR Z,YEAR2
ADD HL,BC
DEC A
JR Z,YEAR2
CP #0B
JR Z,YEAR2
CP D
JR Z,YEAR2
ADD HL,BC
DEC A
JR Z,YEAR2
CP #0B
JR Z,YEAR2
CP #16
JR Z,YEAR2
ADD HL,BC
DEC A
JR Z,YEAR2
ADD HL,BC
DEC A
JR Z,YEAR2
CP #06
JR Z,YEAR2
CP D
JR Z,YEAR2
ADD HL,BC
DEC A
JR Z,YEAR2
CP #0B
JR Z,YEAR2
CP D
JR Z,YEAR2
ADD HL,BC
SUB #02
JR Z,YEAR2
ADD HL,BC
DEC A
JR Z,YEAR2
CP #06
JR Z,YEAR2
CP D
JR Z,YEAR2
ADD HL,BC
DEC A
JR Z,YEAR2
CP #0B
JR Z,YEAR2
CP D
JR Z,YEAR2
ADD HL,BC
SUB #02
JR Z,YEAR2
ADD HL,BC
SUB #04
JR Z,YEAR2
ADD HL,BC
SUB #04
JR Z,YEAR2
ADD HL,BC
SUB #04
JR Z,YEAR2
ADD HL,BC
YEAR2 LD A,(HL)
ADD A,E
YEAR3 CP #08
RET C
SUB #07
JR YEAR3
TABLE DB 5,1,1,4,6,2,4,0,3,5,1,3
DB 6,2,2,5,0,3,5,1,4,6,2,4
DB 0,3,3,6,1,4,6,2,5,0,3,5
DB 1,4,5,1,3,6,1,4,0,2,5,0
DB 3,6,6,2,4,0,2,5,1,3,6,1
DB 4,0,0,3,5,1,3,6,2,4,0,2
DB 6,2,3,6,1,4,6,2,5,0,3,5
DB 1,4,4,0,2,5,0,3,6,1,4,6
DB 2,5,5,1,3,6,1,4,0,2,5,0
DB 4,0,1,4,6,2,4,0,3,5,1,3
DB 2,5,6,2,4,0,2,5,1,3,6,1
DB 0,3,4,0,2,5,0,3,6,1,4,6
DB 5,1,2,5,0,3,5,1,4,6,2,4
DB 3,6,0,3,5,1,3,6,2,4,0,2
************************ END ***
Другие статьи номера:
Похожие статьи:
В этот день... 13 ноября