Proton #44
31 июля 1998

Кодинг - Часы для ISDOS'а под SMUC...

╔══════════════════════════════════════════════════════════════╗
║            Кодинг.             ║
╙──────────────────────────────────────────────────────────────╜
(C) EVP-SOFT

  Всем  привет.  Написал вот часы для ISDOS'а под SMUC..., а как
только поставлю себе на GRM м/с ВИ1, то сделаю и под нее...

;
; Часы под IS-DOS для ZS-SCORPION (только со SMUC), версия 1.00
; (C) EVP-SOFT,  E-Mail: zxnet@iname.com  To: 500:95/468
;
; Date: 1998.07.20.15:40
;
;  Часы можно "двигать" по экрану, меняя адреса
;  по меткам ADR_A1, ADR_A2 и ADR_P
;
;
;
        ORG  50000,0
;
; установка/снятие резидента
;
MEM00   EQU  $-1
        DEFW INIT
        DEFW 0
        LD   A,#FF
MEM01   EQU  $
        LD   HL,CLOCKF
        LD   C,#1E
        RST  #10
        RET
INIT    CP   #FE
        LD   A,#00
        JR   Z,__DEL
        LD   A,#FF
MEM02   EQU  $
__DEL   LD   HL,CLOCKF
        LD   C,#1E
        RST  #10
        RET
        DEFW 0
;
; счётчик 50-и INT'ов, что-бы меньше тормозить, часы
; читаются только один раз в секунду
;
CLOCKF  LD   A,1
CLOCK1  EQU  $-1
        DEC  A
CLOCK8  LD   (CLOCK1),A
        RET  NZ
        LD   A,#32 ; #32=50
CLOCK9  LD   (CLOCK1),A
;
; установка атрибутов циферблата
;
ADR_A1  LD   HL,#581B ; адрес атрибутов первого знакоместа
ADR_A2  LD   DE,#581C ; DE=HL+1
        LD   BC,4
CLOCK11 LD   A,(CLOCK10 ) ; там лежит цвет для UniColor'а
        LD   (HL),A
        LDIR
;
; запрос времени,
; выход C - сек
;       B - мин
;       E - час
;       L - день недели
;
        LD   D,#20 ; а если было бы #21 - то вых. ЧИС,МЕС,ГОД
        RST  8  ; сам запрос
        DEFB #89
;
; вывод времени
;
        PUSH BC ; сохраним мин/сек
        LD   A,E ; часы для печати
ADR_P   LD   DE,#401B ; адрес верхней строки первого знакоместа
CLOCKA  CALL CLOCK4 ; вывели часы
        POP  AF ; тут "C" попадает в "F" - теперь bit0 в CarryF
        LD   LX,A ; сохраним минуты
        LD   L," " ; пробел (для мигания точек)
        JR   C,CLOCK7 ; определение не/чётных сек. для мигания
        LD   L,":"
CLOCK7  CALL CLOCK12  ; выводим пробел или точки
        LD   A,LX ; восстановили минуты...
;
; вывод цифр
;
CLOCK4  LD   B,#2F ;"0"-1
CLOCK5  INC  B
        SUB  10
        JR   NC,CLOCK5
        ADD  A,#3A     ;"0"+10
        EX   AF,AF'
        LD   L,B
CLOCKB  CALL CLOCK12
        EX   AF,AF'
;
; вычисление адреса фонта в ROM-48, конечно можно печатать
; и через ядро isdos'а, но так гораздо быстрее...
;
CLOCK6  LD   L,A
CLOCK12 LD   H,0
        ADD  HL,HL
        ADD  HL,HL
        ADD  HL,HL
        LD   A,H
        ADD  A,#3C
        LD   H,A
;
; вывод символа на экран
;
        LD   B,8
        LD   C,D
CLOCK3  LD   A,(HL)
        LD   (DE),A
        INC  L
        INC  D
        DJNZ CLOCK3 ; для экономии места пожертвуем ~110 тактов
        INC  E ; для следующего вывода
        LD   D,C
        RET
;
; настройка цвета для UniColor'а
;
        DEFB "UnCo" ; метка
        DEFB 1 ; количество цветов
CLOCK10 DEFB #F8 ; сам цвет (#F8 = FLASH1,BRIGHT1,...)
;
; таблица адресов настройки резидента
;
        DEFW #FFFF
        DEFW CLOCK7,CLOCK8,CLOCK9,CLOCKA,CLOCKB,CLOCK11
        DEFW MEM00,MEM01,MEM02


Ну а ниже приводится файл, в котором зазипованы готовые часы под
ISDOS и исходник для ALASM'a. Сначала файл надо выгрузить, затем
разUUEчить,  потом  расHOBETить,  и  наконец распаковать в ZXUN-
ZIP'е.


──────────────────────────линия отреза──────────────────────────
section 1 of 1 of file zsclock1.$z  < iS-UUE 1.00 by MK >

begin 644 zsclock1.$z
M6E-C;&]C:S%:25`5"``);`=:4V-L+FAL<$,``,P!`BT!!ZN5Y`,`&X($$8Q#
M+GT:->G2K<6W7E:Y'G0X=>#?.V:-,BI3:L.!4EZ]7N06J>VG#KVK5RX:=^Z
MF8<+!B^Z-/CPJ-:/Z1(FS(8-)X<7#[HU:-&K48L&[5YN.I%03UHUN_%LP>I
M&K1JD*Y#KS_?VC6+L5V:]8@4;=&;1XUJ/2`&ORX=6VHBKK]2;M.K</H@6K%
M.I;MV[%K8RC?4##X4D&'].M%91720:W@OL[?[/;RK;('.7[TZO$@VZNBSNY=
M-K14G7C($95S07FIH+2JV[1#WRR]W!/S86W*;*U!M@1I3EU%!#6YHP^]&E1=
MB^!>I8I@`,B&*(>F!%G4*I0X_=0HE3%?M&7;L&G9Z@2I%Z_;LG2!IG4;MFU9
M%TJC9NF^H;Z&FI:9Z:+VG:Q#$W`."&`UI38VPN<F5S0U##D@`!D@"+A>#Z
M``!=PP``/OA;L,.'M?)_OX^`"@"/OA;L,.'M?)```^`3TR;/`/C(R;,A
M&U@1'%@!!``ZS<-W[;`6(,^)Q7L1&T#-H/QW6N(#@"+CK-L/=?08O!-8*
M,/O&.@AHS;/#"&F`"DI*7S&/&<&"$I^$BP4$/H<4<E5;D-O`4W__Y[#<<-W
MPY+#KL.#PT_#5L-EPUI38VQO8VLQ5P``N@`!=0`O%@4?`P"U3AW+UB5:MG!Y
M#O4)LH7PKTN#+SVZ-6CQ[$&*!IET*M&G4UE(<]2L2[=V+<J:BM>W8]?&J->&
M"OZYW+)S_@$(]?9/-2M/)/<=?CRKDFW1JT:).G5[T$&91IT:M.3883>)DV0
MX81>M.O5H/X]O'CPKE67RGM:4V-L;V-K,4@``#("8D%!7@I.`,`M4X=R_;M
MV+4QD8`#^?_!GL@G&#_?[O'N_=O#SN8-5N!.H#M!7@8=?CW(UZY)@TPZM271
MIU-!DE[]'@36MYPZ]*E4J$F?.@6)4KSKU>Q5NP893OBI3:L.3<D2I.C2X,.C
M(C^F2Y@P=?R/0GJ01:U"@?^I42K;*=^R:=BT;'6"U(O7;5FZ0-.Z#=NVK,NQ
M;]M@3_4-]37B/6?-ES1MXORW]QGV)QJ6;IGJ8^;,B6/I;[J4"=-ES)HZ:<+0
M'H9V5]&L79MN=?<B28M&/1JT>/8BSG*0[56#!]UZ7-JS+MWZ'5&#)@V^='C0
M)-Y-VZ07KQHT:Y!!B4K]&C0FBV-:)DA$R!Q*U06KPN4!B++@693M'>H?'UX<
MT[L65?_+<$TO'G5I$$U_&C6IK*O.^X5-BS9!GWE`DBUC&L2<U&E2J@<QC]!7
MA-0%UF<YTJC1!-:X]L70"^>Y5"F3X<N-;+M+:/6=2@[0#%B3UM!?>*74#[
M1>JI_A56%XB?Y=>O1(LR.1I:QM$.P9HQ#=@#,='E->@Z_/GXXL^C5M5$;XFJ
M#CNE>@+(L?ES9KAEZ'554O;HC!SSX/14DI-3V'9$+T$??%/>O?CP[T$X/@'[
MHV[5YD&?:OR>OK3J:U)C]MZ!G=35VF,93J&GSG!TP'K3WCF.+9'@4T=WO4)
MT@YX/@*1^4R9`<*NV'M(U3F=XQP&ZT.D$4X.BP>/.O0XH)[ZC)*>ZA5X-J
MH]:H`]5G'5D39TPA4-OF,W?X5^R+=CU*KT^W!@7DT!S4KD'T*?K#T?,A]!;$
M>R)ENB(.30^>)<T:0]$QR)*G2)@IR"V_TGMU:5-22J@8>W&RS:NZ33OT36,N
M]R0H?0]%ESN::@GIGP;]&KPKHA:55%ETU"PA1"]Z?3G6J$@6]Q)GAU$,!?R
M[*RBV#.ZR+/ET3$XTR>[7*=/<C6I8Q?C6KK9Y1]/+J2[<ZL():<]"#Z&I7
MQ';$9<9@-SB7MKHPK!%'9LFXT/"#'1..<'CCP,_N^#*KZ(*71^+,$1U57!15
M5A81O47$X*ZVV+B<:CEJ5ECI"[8<@Y%4'K9)GM"913'E:OL<G6(R'BS/,*=
MNI=SZU1'%X1=JT;E1Q`Y2)$'/63,:08PBG'9ON8T:P<<ET;)0[[Q$-PPN*)Z
M4&LTPU^D41%?UE)/FY,6FY8NC&D?&E:NW+Q&P#+8N5Y>X(#.=[J>/@OZ162;
MG3V4V-%J?0GWH@MLO4<ET])LUIK65+QKF[0@^-TB0O)4=_$5O>JHG%05V"
MT(=7@#77@;6KR*>43,>4*4"*A%`6-XGJRH:V'>D.151V;!8@--F4MJ!%L[B_
M`1,PSG9PSE?8$C7_.]9W(_6+A"GB,5=`S6N:#OB^(.P`D?."O$:7%UT3HNL`
MCJE!"Z!+80_38'8!JOQT`V;I^P?B7(A8F#85]CO@EDX_W)JI1Z)!DG<ER'9%
ME_JT:4N:.`@M.$2DSR6B/2)E^^P1789^;/!2L^P@W]UW?=JY9-_.`:S<&[?O
M0#76#]2<%.6(X'GITBY=NA@UW$946K^!4@3SQYQ`WJE&XLKADJ3SD<@97I(
ML];-,T`)FS@S<HX7H_M04T"2CMQ,],XB@WQCW<V/4-H#15M5.6JO6EZPQZ?
MYB)M2@BF^++?EG.<40G!)$<,OIN"N)%CTNL0?K!]6$<67;-.=PO[YU`DZWR
M[M.7'NWJ*.K5)3&&YXF9"F.JUM94IF*9IJ`T#=QJ^F41SC6G.-+R^,7+,91-
MJ`3O<WZ;T]FSMY_!J@1H;!1G`-F@4I6C>':0/4$:91IT*I*0NU"I28BI7(<
M%CT%Q'83F"*.-&KSH`R?DF5S"D>%<6$.KM7@F>):78HW:-Q&-,YC.D@QK10
M%H!$3L3$<#@+F<N*62P<(```````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
:````````````````````````````````````
`
end
sum -r/size 31781/3228 section (from "begin" to "end")
sum -r/size 58472/2321 entire input file
──────────────────────────линия отреза──────────────────────────




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Обратная связь - контакты редакции.
Обратная связь - контакты редакции.
Стройка - thе bеst.

В этот день...   18 августа