Coding - Clock for ISDOS under SMUC...

╔════════════════════════ ═══════════════════ ═══════════════════╗
║  Coding.             ║
╙─────────────────────────────── ───────────────────────────────╜
(C) EVP-SOFT

 Hello everyone.  I wrote a clock for ISDOS under SMUC... but how
As soon as I put the m/s VI1 on my GRM, I’ll do it for it too...

;
; Clock under IS-DOS for ZS-SCORPION (only with SMUC), version 1.00
; (C) EVP-SOFT, E-Mail: zxnet@iname.com To: 500:95/468
;
; Date: 1998.07.20.15:40
;
;  The clock can be “moved” around the screen, changing addresses
;  by labels ADR_A1, ADR_A2 and ADR_P
;
;
;
 ORG 50000.0
;
; installing/removing a resident
;
MEMOO EQU $-1
        DEFW INIT
        DEFW 0
        LD A,#FF
MEMO1 EQU $
       LD HL,CLOCKF
       LD C,#1E
        RST #10
        RET
INIT  CP #FE
        LD A,#00
        JR Z,__DEL LD   A,#FF
MEMO2   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 ) ; there is a color for UniColor
        LD (HL),A
        LDIR
;
; time request,
; output C - sec
;       B - min
;       E - hour
;       L - day of the week
;
        LD D,#20 ; and if it were #21, then quit. DAY, MONTH, YEAR
        RST 8 ; the request itself
        DEFB #89
;
; time output
;
        PUSH BC ; save min/sec
        LD A,E ; printable clock
ADR_P  LD DE,#401B ; address of the top line of the first familiarity
CLOCKA  CALL CLOCKCH ; turned off the clock
        POP AF ; here "C" falls into "F" - now bitO is in CarryF
        LD LX,A ; let's save minutes
        LD L," " ; space (for flashing dots)
       JRC,CLOCK7 ; определение не/чётных сек. для мигания
        LD   L,":"
CLOCK7  CALL CLOCK12  ; выводим пробел или точки
        LD   A,LX ; восстановили минуты...
;
; вывод цифр
;
CLOCKЧ  LD   B,#2F ;"0"-1
CLOCKS  INC  B
        SUB  10
        JR   NC,CLOCKS
        ADD  A,#3A     ;"0"+10
        EX   AF,AF'
        LD   L,B
CLOCKB  CALL CLOCK12
        EX   AF,AF'
;
; вычисление адреса фонта в ROM-48, конечно можно печатать
; и через ядро isdos'а, но так гораздо быстрее...
;
CLOCKб  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
;
; displaying a symbol on the screen
;
        LD B,8
        LD C,D
CLOCKЗ LD A,(HL)
        LD(DE),A
        INC L
        INC D
        DJNZ CLOCKЗ ; to save space we will sacrifice ~110 clock cycles
   INC E ; for next output
  LD D,C
        RET
;
; color setting for UniColor
;
      DEFB "UnCo" ; label
      DEFB 1 ; number of colors
CLOCK10 DEFB #F8 ; the color itself (#F8 = FLASH1,BRIGHT1,...)
;
; resident setup address table
;
      DEFW #FFFF
        DEFWCLOCK7,CLOCK8,CLOCK9,CLOCKA,CLOCKB,CLOCK11
      DEFW MEMOO,MEMO1,MEMO2


Well, below is a file in which the finished clock is zipped under
ISDOS and source code for ALASM. First you need to upload the file, then
unpack, then pacHOBETutb, and finally unpack in ZXUN-
ZIP.


───────────────────────────line department──────────────────────────
section 1 of 1 of file zsclock1.$z < iS-UUE 1.00 by MK >

begin 644 zsclock1.$z
MbE-C;&]C:S%:25`5"``);`=:CHV-L+FAL<$,``,P!`BT!!ZNSY`,`&X($$8Q#
M+GT:->G2K<6W7E:Y'GOX=>#?.V:-,BIZ:L.!CHEZ]7NObJ>VG#KVKSRX:=^Z
MF8<+!B^Z-/CPJ-:/Z1(FS(8-)X<7#[HU:-&K48L&[SYN.I%OZUHUN_%LP>I
M&K1JD*Y#KS_?VCb+LSV:]8@4;=&;1XUJ/2`&ORX=bVHBKK]2;M.KI8I@`,B&*(>F!%G4*IOX_=OHEZ%?M&7;L&G9Z@2I%Z_;LG2!IGCH;MFU9
M%TJC9NF^H;Z&FI:9Z:+VG:Q#$W`."&`UIZ8VPN#Z
M``!=PP``/OA;L,.'M?)_OX^`"@"/OA;L,.'M?)```^`ZTR;/`/C(R;,A
M&U@1'%@!!``ZS<-W[;`6(,^)Q7L1&T#-H/QWbN(#@"+CK-L/=?08O!-8*
M,/O&.@AHS;/#"&F`"DI*7S&/&<&"$I^$BPCH$/H<4W8]?&J->&
M"OZYW+)S_@$(]?9/-2M/)/<=?CRKDFW1JT:).G5[T$&91IT:M.3883>)DVO
MX81>M.OSH/X]O'CPKEb7RGM:CHV-L;V-K,4@``#("8D%!7@I.`,`MCHX=R_;MMV+CHQD8`#^?_!GL@G&#_?[O'N_=O#SN8-5N!.H#M!7@8=?CW(UZY)@TPZM271
MIU-!DE[]'@ZbMYPZ]*ECHJ$F?.@6)CHKSKU>QSNP89ZOBIZ:L.3/8BSG*0[56#!]UZ7-JS+MWZ'5&#)@V^='C0
M)-Y-VZO7KQHT:Y!!VCHK]&COFBV-:)DA$R!Q*UObKPNCH!B++@693M'>H?'UX<
MT[L65?_+<$TO'GSI$$U_&CbIK*O.^X5-BS9!GWE`DBUC&L2Y5"FZX*74#[
M1>JI_A56%XB?Y=>O1(LR.1I:QM$.P9HQ#=@#,='E->@Z_/GXXL^CSMS$;XFJ
M#CNE>@+(L?ES9KAEZ'554O;HC!SSX/1CHDI-ZV'9$+T$??%/>O?CP[T$X/@'[
MHV[SYD&?:OR>OKZJ:U)C]MZ!G=Z5VF,93J&GSG!TP'KZWCF.+9'@4T=WOCH)
MT@YX/@*1^4R9`<*NV'M(UZF=XQP&ZT.D$4X.BP>/.OOXH)[ZC)*>ZASX-J
MH]:H`]5G'5D39TPACH-OF,W?X5^R+=CU*KT^W!@7DT!SCHKD'T*?K#T?,A]!;$
M>R)ENB(.30^>)W&RS:NZZZOTZb,N
M]ROH?0]%ESN::@GIGP;]&KPKHA:55%ETU"PA1"]Z?ZGbJ$@6]Q)GAU$,!?R
M[*RBV#.ZR+/ETZ$XTR>[7*=/X(#.=[J>/@OZ162;
MGZVCHV-%J?OGWH@MLOCHJHG%05V"
MT(=7@#77@;bKR*>43,>4*4"*A%`6-XGJRH:V'>D.151V;!8@--FCMJ!%L[B_
M`1,PSG9PSE?8$C7_.]9W(_6+A"GB,5=`SbN:#OB^(.P`D?."O$:7%UTZHNL`
MCJE!"Z!+80_38'8!JOQT`V;I^P?B7(A8F#85]CO@EDX_W)JI1Z)!DG':0/4$:91IT*I*ONU"I28BI7(<
M%CT%Q'83F"*.-&KSH`R?DFSS"D>%<6$.KM7@F>):78HW:-Q&-,YC.D@QK10
M%H!$3L3$<#@+Fend
sum -r/size 31781/3228 section (from "beginning" to "end")
sum -r/size 58472/2321 integer input file
──────────────────────────линия отреза──────────────────────────

Share your thoughts about the article